首页 > 其他分享 >计算二叉树的高度/深度

计算二叉树的高度/深度

时间:2023-08-03 17:00:50浏览次数:33  
标签:right return int TreeHeight 高度 二叉树 深度 root

计算二叉树的高度/深度

默认根结点层次为1。如果为空树,高度为0;如果不是空树,树的高度就是左右子树中高度的较大者+1(+1是包含当前层次的高度)。

//计算树的高度
int TreeHeight(BTNode* root)
{
	if (root == NULL)
	{
		return 0;
	}
	//左右子树中的较大者+1返回
	return TreeHeight(root->left) > TreeHeight(root->right) ?
		TreeHeight(root->left) + 1 : TreeHeight(root->right) + 1;
}

但是上面的程序在每次比较完左子树与右子树的高度之后,直接就把已经得到的结果抛弃了,在返回结果时还要重新再同故宫递归重新计算一次高度,造成了非常大的性能浪费,所以需要再定义两个变量来保存已经得到的结果。

int TreeHeight(BTNode* root)
{
	if (root == NULL)
	{
		return 0;
	}
	//左右子树中的较大者+1返回
	int LeftHeight = TreeHeight(root->left);
	int RightHeight = TreeHeight(root->right);
	return LeftHeight > RightHeight ?
		LeftHeight + 1 : RightHeight + 1;
}

标签:right,return,int,TreeHeight,高度,二叉树,深度,root
From: https://blog.51cto.com/u_15562309/6950932

相关文章

  • 二叉树的最小深度
    所以,如果左子树为空,右子树不为空,说明最小深度是1+右子树的深度。反之,右子树为空,左子树不为空,最小深度是1+左子树的深度。最后如果左右子树都不为空,返回左右子树深度最小值+1。1intminshendu(Node*node){2if(node==nullptr)return0;3if(node......
  • 求二叉树的最大深度
    此为有返回值的递归问题先确定终止条件(如果一个树为空树,它的高度就是0,我们直接返回0,根本不用递归)写出通式(1+max(左子树的最大深度,右子树的最大深度)规模更小的子问题),将通式写在return里面1intmaxshendu(Node*node){2if(node==nullptr)return0;3retur......
  • TabR:检索增强能否让深度学习在表格数据上超过梯度增强模型?
    这是一篇7月新发布的论文,他提出了使用自然语言处理的检索增强RetrievalAugmented技术,目的是让深度学习在表格数据上超过梯度增强模型。检索增强一直是NLP中研究的一个方向,但是引入了检索增强的表格深度学习模型在当前实现与非基于检索的模型相比几乎没有改进。所以论文作者提出......
  • 二叉树的顺序实现
    二叉树的顺序实现////main.c//SqBiTree////CreatedbyEasonon2020/8/7.//Copyright©2020Eason.Allrightsreserved.//#include<stdio.h>#defineOK1#defineERROR0#defineTRUE1#defineFALSE0#defineMAXSIZE100typedefintStatus;//作......
  • 二叉树的链式存储
    二叉树的链式存储////main.c//LinkBiTree////CreatedbyEasonon2020/8/10.//Copyright©2020Eason.Allrightsreserved.//#include<string.h>#include<stdlib.h>#include"math.h"#defineOK1#defineERROR0#defineTRUE1#d......
  • 2023-08-02:给定一棵树,一共有n个点, 每个点上没有值,请把1~n这些数字,不重复的分配到二叉
    2023-08-02:给定一棵树,一共有n个点,每个点上没有值,请把1~n这些数字,不重复的分配到二叉树上,做到:奇数层节点的值总和与偶数层节点的值总和相差不超过1。返回奇数层节点分配值的一个方案。2<=n<=10^5。来自腾讯音乐。答案2023-08-02:大致步骤如下:1.计算出1到n的总和s......
  • 2023-08-02:给定一棵树,一共有n个点, 每个点上没有值,请把1~n这些数字,不重复的分配到二叉
    2023-08-02:给定一棵树,一共有n个点,每个点上没有值,请把1~n这些数字,不重复的分配到二叉树上,做到:奇数层节点的值总和与偶数层节点的值总和相差不超过1。返回奇数层节点分配值的一个方案。2<=n<=10^5。来自腾讯音乐。答案2023-08-02:大致步骤如下:1.计算出1到n的总和sum。2.确......
  • 《深度管理》读书笔记1
    书籍信息参考:https://book.douban.com/subject/30258984/ 一 “赢得漂亮”意味着你能长时间地维持优秀的业绩,因为你拒绝屈服于严酷而招致压力的捷径,暂时将他人当成业绩的牺牲品。你需要让精力充沛、鼓足干劲的人们共同工作。你的策略的强大取决于你的团队在第一线的执行力,要......
  • 剑指 Offer 55 - I. 二叉树的深度
    输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树[3,9,20,null,null,15,7],3/\920/\157返回它的最大深度3。使用递归回溯/***Definitionfor......
  • 横向打印二叉树
    https://www.luogu.com.cn/problem/P8603构造树的过程不难,比较烦人的是如何把这棵树横着打印出来...|-1210-|...|-8-|.......|...|-7.......|-5-|...........|-4首先可以发现,打印的顺序是中序遍历,打印的过程可以在中序遍历的基础上修改classTreeNode:def__init_......