数据结构----二叉树叶子结点到根节点的高度计算
数据结构----二叉树叶子结点到根节点的高度计算
代码:
#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)
如果存在什么问题,欢迎批评指正!谢谢!
数据结构----二叉树叶子结点到根节点的高度计算相关推荐
- 数据结构——从叶子结点到根节点的全部路径
问题 给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/prob ...
- 3007基于二叉链表的二叉树叶子结点到根结点的路径的求解(附DFS在树里的应用分析,思路详解)
以下代码用到的前置知识:DFS算法 可以看这个视频~只用看这个就能懂了~ DFS深搜解决迷宫问题(原理分析+代码实现)_哔哩哔哩_bilibilihttps://www.bilibili.com/vi ...
- 输出二叉树中从每个叶子结点到根结点的路径,统计二叉树的度为1的结点个数,二叉树算表达式(C语言)
1.建立如下图表达式二叉树,并求值. (只涉及加减乘除运算) +*3##4##/8##4## (先序建立表达式) 2.统计二叉树的度为1的结点个数: 3.输出二叉树中从每个叶子结点到根结点的路径. # ...
- 二叉树叶子结点,非叶子节点以及深度的计算
二叉树叶子结点的计算 //统计叶子结点的数目 int LeafNum(BiTree T) {if (!T) {return 0;} else if (!T->lchild && ...
- 西工大NOJ数据结构理论——016.计算二叉树叶子结点数目(耿6.14)
一.初级思路 拿到题之后的好习惯--先在纸上写思路: 1.构建二叉树: char* BinTreeBuilding(PBinTreeNode ptr_node,char *ptr_str){//创建二 ...
- 【数据结构·考研】二叉树叶子结点的个数
二叉树叶子结点的个数 非递归的求法,用广度优先遍历,每出队一个结点,判断它是不是叶子结点.递归的做法,先由上自下遍历,等遍历到叶子处再逐层返回左右子树的叶子结点总和,最后得到整棵树的叶子结点数. 那么 ...
- c语言实现求二叉树叶子结点个数
通过递归求解二叉树叶子结点个数,关键在于递归结束条件的设置. main.c #include<stdio.h>//定义结点类型 typedef struct BINARYNODE {cha ...
- 输出每个叶子结点到根结点的路径
输出每个叶子结点到根结点的路径 void RouteToRoot(BitNodes root, stack<int> s) {if (root) {s.push(root->data ...
- C语言实现二叉树叶子结点数目
C语言实现二叉树叶子结点数目 要实现的功能如下 完整源代码实现如下 要实现的功能如下 求二叉树,所有的叶子总数,包括左叶子,右叶子. 完整源代码实现如下 #include<stdio.h> ...
最新文章
- jsoho.com介绍
- 9月22日 奇怪的贸易
- .net加密解密学习总结
- Shell编程之for循环
- Kubernetes 稳定性保障手册 -- 日志专题
- 若依前后端分离版怎样修改主页面和浏览器上的图标和标题
- MVC新手教程三:Entity Framework 4.0 来实现MVC的增删改查功能,10分钟搞定
- Python-OpenCV 笔记9 -- 模板匹配
- 大学计算机技术类社团/组织——社团官方网站
- Dorado 7.1.20 发布,Ajax的Web开发平台
- 邮件发送类,支持Gmail
- 车牌识别之车牌定位(方案总结)
- Leetcode PHP题解--D29 973. K Closest Points to Origin
- JeecgBoot 2.x版本SQL漏洞补丁发布——响应零日漏洞修复计划
- 狗狗币暴涨暴跌?数据分析师带你走进它的前世今生!
- 吴恩达机器学习 4.逻辑回归(Logistic Regression)
- 万字干货!详解JavaScript执行过程
- 【把P2P进行到底:讲述Jxta的故事(2)】
- rpm数据库异常问题总结
- 移动广告平台有哪些,各有啥优缺点?
热门文章
- linux c通过文件描述符以及write和read方法对文件进行读写
- Android插件化开发基础之Java类加载器与双亲委派模型
- C++入门指南及实战 第一步 概述及经典HelloWorld
- 我的世界服务器物品属性,属性 - Minecraft Wiki,最详细的官方我的世界百科
- php本地的调试安装,教你本地安装、运行、调试PHP程序
- 编程语言的“别样”编年史
- 计算机管理用户和组无法访问,同一工作组无法访问如何解决【详解】
- mysql xa 演示_mysql的XA事务恢复过程详解
- 大厂Java初级开发工程师!!!面试必问项之Set实现类:TreeSet
- 10玩rust_C++工程师的Rust迁移之路(5)- 继承与组合 - 下