剑指offer 6.3 知识迁移能力2- 二叉树的深度
2014-08-11 15:44
387 查看
面试题39: 二叉树的深度
题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
例如:输入二元树:
10
/ \
6 14
/ / \
4 12 16
输出该树的深度3。
二叉树的结点定义如下:
struct SBinaryTreeNode // a node
of the binary tree
{
int m_nValue; // value of node
SBinaryTreeNode *m_pLeft; // left child of node
SBinaryTreeNode *m_pRight; // right child of node
};
分析:题目中定义的树的深度,也就是最长路径。
如果树中只有一个节点,深度为1,。
如果根节点只有左子树没有右子树,那么树的深度为 左子树深度+1;同样只有右子树没有左子树,深度为 右子树深度+1;
如果既有左子树也有右子树,那么树的深度为左、右子树深度的较大值 + 1;
这个思路,可以用递归实现。
题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
例如:输入二元树:
10
/ \
6 14
/ / \
4 12 16
输出该树的深度3。
二叉树的结点定义如下:
struct SBinaryTreeNode // a node
of the binary tree
{
int m_nValue; // value of node
SBinaryTreeNode *m_pLeft; // left child of node
SBinaryTreeNode *m_pRight; // right child of node
};
分析:题目中定义的树的深度,也就是最长路径。
如果树中只有一个节点,深度为1,。
如果根节点只有左子树没有右子树,那么树的深度为 左子树深度+1;同样只有右子树没有左子树,深度为 右子树深度+1;
如果既有左子树也有右子树,那么树的深度为左、右子树深度的较大值 + 1;
这个思路,可以用递归实现。
int TreeDepth(SBinaryTreeNode *pTreeNode) { // the depth of a empty tree is 0 if(!pTreeNode) return 0; // the depth of left sub-tree int nLeft = TreeDepth(pTreeNode->m_pLeft); // the depth of right sub-tree int nRight = TreeDepth(pTreeNode->m_pRight); // depth is the binary tree return (nLeft > nRight) ? (nLeft + 1) : (nRight + 1); }
相关文章推荐
- 【剑指offer】6.3知识迁移能力——面试题39:二叉树的深度
- 剑指offer 6.3 知识迁移能力3- 判断二叉树是否是平衡二叉树
- (C++)剑指offer-38:二叉树的深度(知识迁移能力)
- 剑指offer 39题 【知识迁移能力】二叉树的深度
- 剑指offer 6.3 知识迁移能力5-和为s的两个数字
- 【剑指offer】6.3知识迁移能力——面试题40:数组中只出现一次的数字
- 【剑指offer】6.3知识迁移能力——面试题41:和为s的两个数字VS和为s的连续正数序列
- 剑指offer 6.3 知识迁移能力7-反转单词顺序
- 【剑指offer】6.3知识迁移能力——面试题42:翻转单词顺序VS左旋转字符串
- 剑指offer 6.3 知识迁移能力6-和为s的连续正数序列
- 剑指offer 6.3 知识迁移能力8-左旋字符串
- 剑指offer 6.3 知识迁移能力1- 数字在排序数组中出现的次数
- 【剑指offer】6.3知识迁移能力——面试题38:数字在排序数组中出现的次数
- 剑指offer 6.3 知识迁移能力4- 数组中只出现一次的数字
- 剑指offer 41题【知识迁移能力】和为S的连续正数序列
- 剑指offer 41题【知识迁移能力】和为S的两个数字
- (C++)剑指offer-40:数组中只出现一次的数字(知识迁移能力)
- 【剑指Offer-知识迁移能力】和为S的连续整数序列
- 【剑指Offer-知识迁移能力】有序数组中和为S的两个数字
- 知识迁移能力-二叉树的深度