面试题39:二叉树的深度
来源:互联网 发布:成都生活家装饰 知乎 编辑:程序博客网 时间:2024/04/30 11:46
题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
这题可以用递归做,较为简单,代码如下:
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};class Solution {public: int TreeDepth(TreeNode* pRoot) { if(pRoot==NULL) return 0; int leftNodeDepth=TreeDepth(pRoot->left); int rightNodeDepth=TreeDepth(pRoot->right); return max(leftNodeDepth,rightNodeDepth)+1; }};
随后,该题目又出了一个扩展题目,让判断是否是一棵平衡二叉树。平衡二叉树就是任意结点的左右子树深度相差不超过1,代码如下:
class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(pRoot==NULL) return true; int leftLength=TreeDepth(pRoot->left); int rightLength=TreeDepth(pRoot->right); if(leftLength-rightLength>1||rightLength-leftLength>1) return false; else return IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right); } int TreeDepth(TreeNode* pRoot) { if(pRoot==NULL) return 0; int leftNodeDepth=TreeDepth(pRoot->left); int rightNodeDepth=TreeDepth(pRoot->right); return max(leftNodeDepth,rightNodeDepth)+1; } };
0 0
- 面试题39:二叉树的深度
- 面试题39:二叉树的深度
- 面试题39:二叉树的深度
- 面试题39:二叉树的深度
- 面试题39:二叉树的深度
- 面试题39:二叉树的深度
- 面试题39:二叉树的深度
- 面试题39:二叉树的深度
- 面试题28:二叉树的深度
- 面试题 求二叉树的深度
- 面试题43:二叉树的深度*
- 面试题39. 二叉树的深度
- [剑指offer][面试题39]二叉树的深度
- 【剑指offer】面试题39:二叉树的深度
- 剑指Offer:面试题39 二叉树的深度
- 面试题39_1 二叉树的深度
- 【剑指Offer学习】【面试题39:二叉树的深度】
- 剑指offer-面试题39:二叉树的深度
- Jre和JDK的区别
- light OJ -DNA Prefix (字典树)
- JSX,Html语法需注意的部分
- CentOS7关闭SELinux
- ROS学习需要看的网络教程_整理
- 面试题39:二叉树的深度
- JavaScript--05 DOM基础 12.1
- Java 值交换详解
- [Leetcode]204. Count Primes
- bnuoj 1068 比赛安排
- javaScript--05 DOM基础 12.2
- Java设计模式之观察者模式
- javaScript--05 DOM基础 12.3
- 【涨知识】4大名妓、4大美女、4大才子、4大才女,太齐全了!