首页 > 代码库 > C++: Find height of a Binary Tree
C++: Find height of a Binary Tree
给定一棵二叉树, 如何确定这棵二叉树的高度(即树的最大的深度), 是一个很常见的问题。
给下图回顾一下:
关于高度和深度的概念, 参见上图。
NOTE: 高度: 参考节点是距离节点最远的叶子
深度: 参考节点是根节点
寻找二叉树的高度也可以通过一个递归函数(a recursive function)实现, 这依然源于树是一个递归的数据结构。
例如, 对于下图, 我们可以求出根节点的做子树和右子树的高度, 让后将得到的值分别+1 ,然后选择最大数值作为树的高度。 递归的, 要想找到左子树的高度, 首先确定以左子树的节点为根节点, 现在的这个根节点的左子树和右子树的高度, 对于右子树, 同理。 一直递归下去, 直至到达base case, 返回, 最终问题得到求解。
伪代码为:
上述算法的时间复杂度为O(n)(n是binary tree 的节点的数目)
下面给出求解二叉树的高度的函数C++ 代码:
max 函数为:
int max(int a, int b) { return (a > b ? a:b);}
求解高度函数为:
int FindHeight(Node* root) { if(root == NULL) return -1; return max(FindHeight(root -> left), FindHeight(root -> right)) + 1;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。