数据结构----二叉树叶子结点到根节点的高度计算

代码:

#include<stdio.h>
#include<stdlib.h>
typedef struct bstTree {int data;struct bstTree* lchild, *rchild;
}bstTree;
void createBSTTree(bstTree* & T, int data) {//创建二叉排序树bstTree *p = NULL;if (!T) {p = (bstTree*)malloc(sizeof(bstTree));p->data = data;p->lchild = p->rchild = NULL;T = p;return;}if (data < T->data) {//左子树插入createBSTTree(T->lchild, data);}else {//右子树插入createBSTTree(T->rchild, data);}
}
void prePrint(bstTree*  BSTTree) {//前序遍历二叉排序树if (BSTTree) {printf("%d ", BSTTree->data);prePrint(BSTTree->lchild);prePrint(BSTTree->rchild);}
}
void calLeafHeight(bstTree* T,int h) {//计算叶子结点到根节点的高度if (!T) {return;}if (T->lchild == NULL && T->rchild == NULL) {printf("%d叶子结点到根节点的高度为%d\n", T->data, h + 1);}else {calLeafHeight(T->lchild, h + 1);//左孩子calLeafHeight(T->rchild, h + 1);//右孩子}
}
int main() {bstTree* T = NULL;//一定要初始化为空树int count, data;printf("开始构造二叉排序树:\n输入二叉排序树结点的数目:");scanf_s("%d", &count);while (count--) {//构造二叉排序树printf("输入二叉排序树的第%d个结点:", count + 1);scanf_s("%d", &data);createBSTTree(T, data);}printf("前序遍历二叉排序树\n");prePrint(T);//前序遍历二叉排序树printf("\n");calLeafHeight(T, 0);printf("\n");system("pause");return 0;
}

测试截图:

时间复杂度O(logn),空间复杂度O(1)

如果存在什么问题,欢迎批评指正!谢谢!

数据结构----二叉树叶子结点到根节点的高度计算相关推荐

  1. 数据结构——从叶子结点到根节点的全部路径

    问题 给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/prob ...

  2. 3007基于二叉链表的二叉树叶子结点到根结点的路径的求解(附DFS在树里的应用分析,思路详解)

    以下代码用到的前置知识:DFS算法 可以看这个视频~只用看这个就能懂了~ DFS深搜解决迷宫问题(原理分析+代码实现)_哔哩哔哩_bilibilihttps://www.bilibili.com/vi ...

  3. 输出二叉树中从每个叶子结点到根结点的路径,统计二叉树的度为1的结点个数,二叉树算表达式(C语言)

    1.建立如下图表达式二叉树,并求值. (只涉及加减乘除运算) +*3##4##/8##4## (先序建立表达式) 2.统计二叉树的度为1的结点个数: 3.输出二叉树中从每个叶子结点到根结点的路径. # ...

  4. 二叉树叶子结点,非叶子节点以及深度的计算

    二叉树叶子结点的计算 //统计叶子结点的数目 int LeafNum(BiTree T) {if (!T) {return 0;} else if (!T->lchild && ...

  5. 西工大NOJ数据结构理论——016.计算二叉树叶子结点数目(耿6.14)

    一.初级思路 拿到题之后的好习惯--先在纸上写思路: 1.构建二叉树: char* BinTreeBuilding(PBinTreeNode ptr_node,char *ptr_str){//创建二 ...

  6. 【数据结构·考研】二叉树叶子结点的个数

    二叉树叶子结点的个数 非递归的求法,用广度优先遍历,每出队一个结点,判断它是不是叶子结点.递归的做法,先由上自下遍历,等遍历到叶子处再逐层返回左右子树的叶子结点总和,最后得到整棵树的叶子结点数. 那么 ...

  7. c语言实现求二叉树叶子结点个数

    通过递归求解二叉树叶子结点个数,关键在于递归结束条件的设置. main.c #include<stdio.h>//定义结点类型 typedef struct BINARYNODE {cha ...

  8. 输出每个叶子结点到根结点的路径

    输出每个叶子结点到根结点的路径 void RouteToRoot(BitNodes root, stack<int> s) {if (root) {s.push(root->data ...

  9. C语言实现二叉树叶子结点数目

    C语言实现二叉树叶子结点数目 要实现的功能如下 完整源代码实现如下 要实现的功能如下 求二叉树,所有的叶子总数,包括左叶子,右叶子. 完整源代码实现如下 #include<stdio.h> ...

最新文章

  1. jsoho.com介绍
  2. 9月22日 奇怪的贸易
  3. .net加密解密学习总结
  4. Shell编程之for循环
  5. Kubernetes 稳定性保障手册 -- 日志专题
  6. 若依前后端分离版怎样修改主页面和浏览器上的图标和标题
  7. MVC新手教程三:Entity Framework 4.0 来实现MVC的增删改查功能,10分钟搞定
  8. Python-OpenCV 笔记9 -- 模板匹配
  9. 大学计算机技术类社团/组织——社团官方网站
  10. Dorado 7.1.20 发布,Ajax的Web开发平台
  11. 邮件发送类,支持Gmail
  12. 车牌识别之车牌定位(方案总结)
  13. Leetcode PHP题解--D29 973. K Closest Points to Origin
  14. JeecgBoot 2.x版本SQL漏洞补丁发布——响应零日漏洞修复计划
  15. 狗狗币暴涨暴跌?数据分析师带你走进它的前世今生!
  16. 吴恩达机器学习 4.逻辑回归(Logistic Regression)
  17. 万字干货!详解JavaScript执行过程
  18. 【把P2P进行到底:讲述Jxta的故事(2)】
  19. rpm数据库异常问题总结
  20. 移动广告平台有哪些,各有啥优缺点?

热门文章

  1. linux c通过文件描述符以及write和read方法对文件进行读写
  2. Android插件化开发基础之Java类加载器与双亲委派模型
  3. C++入门指南及实战 第一步 概述及经典HelloWorld
  4. 我的世界服务器物品属性,属性 - Minecraft Wiki,最详细的官方我的世界百科
  5. php本地的调试安装,教你本地安装、运行、调试PHP程序
  6. 编程语言的“别样”编年史
  7. 计算机管理用户和组无法访问,同一工作组无法访问如何解决【详解】
  8. mysql xa 演示_mysql的XA事务恢复过程详解
  9. 大厂Java初级开发工程师!!!面试必问项之Set实现类:TreeSet
  10. 10玩rust_C++工程师的Rust迁移之路(5)- 继承与组合 - 下