求二叉树的高度(非递归)

Posted daoko

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求二叉树的高度(非递归)相关的知识,希望对你有一定的参考价值。

非递归就是在层次遍历的基础上加上个depth,len变量来记录即可,有点类似于BFS

用c++实现如下:


 

 

 1 int TreeDepth(TreeNode* pRoot)
 2     
 3      queue<TreeNode*> q;
 4         if(!pRoot) return 0;
 5         q.push(pRoot);
 6         int depth=0;
 7         while(!q.empty())
 8             int len=q.size();//队列的当前大小
 9             depth++;
10             while(len--) //循环完就是一层都退出队列了
11                 TreeNode* temp=q.front();//表头
12                 q.pop();
13                 if(temp->left) q.push(temp->left);
14                 if(temp->right) q.push(temp->right);
15             
16         
17         return level;
18     

 

以上是关于求二叉树的高度(非递归)的主要内容,如果未能解决你的问题,请参考以下文章

递归算法及递归算法求二叉树的高度(二叉链表存储)

二叉树(11)----求二叉树的镜像,递归和非递归方式

二叉树的遍历

递归与非递归求二叉树深度

剑指offer:平衡二叉树

非递归求二叉树的前序中序和后序遍历