码迷,mamicode.com
首页 > 编程语言 > 详细

C++: Find height of a Binary Tree

时间:2014-07-21 09:18:35      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:blog   http   数据   2014   io   问题   

给定一棵二叉树, 如何确定这棵二叉树的高度(即树的最大的深度), 是一个很常见的问题。

给下图回顾一下:

bubuko.com,布布扣

关于高度和深度的概念, 参见上图。

NOTE: 高度: 参考节点是距离节点最远的叶子

深度: 参考节点是根节点

 

寻找二叉树的高度也可以通过一个递归函数(a recursive function)实现, 这依然源于树是一个递归的数据结构。

例如, 对于下图, 我们可以求出根节点的做子树和右子树的高度, 让后将得到的值分别+1 ,然后选择最大数值作为树的高度。 递归的, 要想找到左子树的高度, 首先确定以左子树的节点为根节点, 现在的这个根节点的左子树和右子树的高度, 对于右子树, 同理。 一直递归下去, 直至到达base case, 返回, 最终问题得到求解。 

bubuko.com,布布扣

伪代码为:

bubuko.com,布布扣

上述算法的时间复杂度为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;
}


 

 

C++: Find height of a Binary Tree,布布扣,bubuko.com

C++: Find height of a Binary Tree

标签:blog   http   数据   2014   io   问题   

原文地址:http://blog.csdn.net/a130737/article/details/37991075

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!