二叉树的深度
2015-11-02 17:43
183 查看
求二叉树深度是一个基本的算法,解决的思路如下:
1. 根据二叉树的非递归遍历,设置两个记录变量“观察”栈的深度变化:real_depth是栈真正的深度,cur_depth是当前栈的深度。对每个节点进行遍历,如果cur_depth大于real_depth则更新real_depth。
2. 利用递归求解。树的深度为其左右子树中较大者的深度加1。思想很好理解,代码也简单。
以下代码为递归求解:
1. 根据二叉树的非递归遍历,设置两个记录变量“观察”栈的深度变化:real_depth是栈真正的深度,cur_depth是当前栈的深度。对每个节点进行遍历,如果cur_depth大于real_depth则更新real_depth。
2. 利用递归求解。树的深度为其左右子树中较大者的深度加1。思想很好理解,代码也简单。
以下代码为递归求解:
* Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int maxDepth(TreeNode* root) { if (!root) return 0; return 1 + max(maxDepth(root->left), maxDepth(root->right)); } };
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- 深度 Ghost XP 八分钟快速装机版 V5.0 下载地址
- 有关数据库SQL递归查询在不同数据库中的实现方法
- C#中的递归APS和CPS模式详解
- WinForm实现按名称递归查找控件的方法
- C#中的尾递归与Continuation详解
- C语言二叉树的非递归遍历实例分析
- C++深度优先搜索的实现方法
- 使用C语言构建基本的二叉树数据结构
- C#递归实现显示文件夹及所有文件并计算其大小的方法
- C++非递归队列实现二叉树的广度优先遍历
- php递归创建目录的方法
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- Javascript递归打印Document层次关系实例分析
- oracle 使用递归的性能提示测试对比
- 使用curl递归下载软件脚本分享
- Perl脚本实现递归遍历目录下的文件
- JavaScript的递归之递归与循环示例介绍
- C# 递归查找树状目录实现方法
- 全排列算法的非递归实现与递归实现的方法(C++)