在每个结点中储存其深度。在二叉树的创建和遍历过程中可以发现,每次调用函数的时候都是前往左子树或者右子树,这个时候所前往的结点的深度都会增加一个,而当函数调用完成的时候会退出函数栈在此函数中的结点深度就会减少一个。因此可以设置一个全局变量deep来表示当前函数中的结点的深度,在创建二叉树的函数开头深度加1,当函数调用结束退栈前再将深度减1.

如下图所示的二叉树

下面是代码

#include<stdio.h>
#include<stdlib.h>
int deep=0;//在遍历树的过程中表示当前深度。
struct bitree
{char data;struct bitree* lchild;struct bitree* rchild;int deepth;
};//储存结点信息,指向左右子树的指针,以及该结点深度。
struct bitree* precreat(struct bitree* t)
{char ch;scanf("%c",&ch);deep++;//每次调用函数深度+1.if(ch==' ')t=NULL;else{if(!(t=(struct bitree*)malloc(sizeof(struct bitree))))exit(0);t->data=ch;t->lchild=precreat(t->lchild);t->rchild=precreat(t->rchild);t->deepth=deep;}deep--;//函数调用完退栈深度—1.return t;
}//先序建立二叉树。
void preordertraverse(struct bitree* t)
{if(t){printf("%c 深度:%d\n",t->data,t->deepth);preordertraverse(t->lchild);preordertraverse(t->rchild);}
}//先序遍历二叉树。int main()
{struct bitree* t;printf("请输入您要创建的先序树:");t=precreat(t);printf("对此树先序遍历的结果:\n");preordertraverse(t);return 0;
}

下面是上图所示二叉树运行结果

二叉树结点深度(C语言)相关推荐

  1. c语言二叉树结点 深度,求二叉树的深度、总结点数和叶子结点数

    二叉树的二叉链表的存储结构: typedef   char   TElemType; typedef   struct    BiTNode { TElemType data;//数据元素 BiTNo ...

  2. java 二叉树的深度、平衡二叉树、二叉树的下一个结点

    1. 二叉树的深度 1. 题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 2. 求解思路 可以用后序遍历,从最后一层 ...

  3. 计算二叉树的深度和叶子结点数(递归算法实现)

    [问题描述] 计算二叉树的深度和叶子结点数 [输入形式] 输入二叉树的先序遍历序列建立二叉树. [输出形式] 输出二叉树的叶子结点数和深度. [样例输入] A B C # # # # [样例输出] L ...

  4. 1. 二叉树的深度及结点最远距离

    1. 二叉树的深度及结点最远距离 [问题描述]考研真题:求二叉树的深度及二叉树中最远两个结点的距离. [输入形式]拓展的前序遍历序列 [输出形式]深度和距离 [样例输入]AB#C## ​#includ ...

  5. 代码实现求二叉树结点数和叶子结点数(C语言)

    本篇会用到之前讲过的二叉树三种遍历方法的代码实现,当然这里还会再写一遍,可以先去看这篇博客二叉树的概念及三种遍历方法(C语言)_Perfectkn的博客-CSDN博客 目录 两种方法求二叉树结点总个数 ...

  6. 【数据结构】二叉树的构建(C语言实现)

    1.树概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合.把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的. ...

  7. 面试题:二叉树的深度

    题目:输入一棵二叉树的根节点,求该树的深度.从根节点到叶子结点一次经过的结点形成树的一条路径,最长路径的长度为树的深度.根节点的深度为1. 解体思路: 如果根节点为空,则深度为0,返回0,递归的出口 ...

  8. 剑指offer系列之三十七:二叉树的深度

    题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 有了前面寻找二叉树路径的基础之后,解决这题应该不难.根据书上的思路, ...

  9. c++用二叉树表示代数表达式_C语言:数据结构-二叉树的定义和基本术语和二叉树的性质...

    二叉树的定义和基本术语 (1)二叉树的定义 二叉树(Binary Tree):每个结点至多有两棵子树,且子树有左.右之分.在二叉树中不含度数大于2的结点. 二叉树的递归定义为:二叉树或者是一棵空树,或 ...

最新文章

  1. Packt.Java.9.High.Performance.2017.11
  2. Python基础之循环语句
  3. 【Hexo】搭建自己的博客并到Github Pages
  4. apache poi合并单元格设置边框
  5. mysql 性能拐点_性能压测及分析调优实践
  6. 培养杰出程序员的捷径
  7. Win10 打开PLSql,其他软件卡到爆,原因CnPlugin_1.5.4插件的问题
  8. 如何做web程序权限管理
  9. 计算机科学导论3000,计算机网络导论论文_大一计算机科学导论论文_计算机导论论文3000字...
  10. LaTeX下载安装-1
  11. 微信小程序确认取消弹窗
  12. BLE蓝牙的连接和配对过程
  13. jax_ws_JAX-RS和OpenAPI对Hypermedia API的支持:任重而道远
  14. php的tips(mysql语句union等问题)
  15. #优质代码# Map按Value降序排序,Value相同时按Key排序
  16. python批量图像处理_python图像处理(4)之图像批量处理
  17. 全网最全面的GitHub使用教程
  18. 机器学习中的模型是什么?
  19. mcnp的重复探测器单元计数-fmesh卡的介绍
  20. HDS CTO谈优化存储投资 渡过经济寒冬

热门文章

  1. 表格中json数据展示
  2. 儿童电影排行榜前十名,十部优秀儿童影片(儿童英语电影排行榜前十名)
  3. 微信小程序页面跳转方法总结,面试必备
  4. 荣耀亚洲背景音乐-榜样铃声 荣耀亚洲背景音乐-榜样手机铃声免...
  5. QQ登录第三方接口研究(2)-接入规范
  6. html 网页 立方米m³ n次幂 乱码问题
  7. python遍历字典修改符合条件的value
  8. Hybrid APP混合开发经验总结《一》
  9. 中国地面气候资料日值数据集(V3.0)数据说明以及数据处理
  10. 【转】解密饿了么大前端团队