微软面试题:写程序找出二叉树的深度
2012-03-23 22:47
281 查看
一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。
也可以采用下面的思路:
类似于递归的先序遍历,层层向下计算,每向下计算一层,深度
就加1,CalTreeDepth(PNode pn, unsigned n)中的第二个
参数表示上一层的深度,所以程序在调用时, 假设proot为整个
树的根节点,则其深度depth为:
unsigned depth = CalTreeDepth(proot, 0);
*/
代码如下:
int DepthOfTree(BiTreeNode* root) { if(NULL == root) { return 0; } return max(DepthOfTree(root->leftChild), DepthOfTree(root->rightChild))+1; }
也可以采用下面的思路:
类似于递归的先序遍历,层层向下计算,每向下计算一层,深度
就加1,CalTreeDepth(PNode pn, unsigned n)中的第二个
参数表示上一层的深度,所以程序在调用时, 假设proot为整个
树的根节点,则其深度depth为:
unsigned depth = CalTreeDepth(proot, 0);
*/
代码如下:
unsigned CalTreeDepth(PNode pn, unsigned n) { static unsigned d = 0; //使用static变量d来记录出现的最大深度 if(pn) { if(n+1 > d) d = n+1; CalTreeDepth(pn->left, n+1); CalTreeDepth(pn->right, n+1); } return d; }
相关文章推荐
- 微软面试题: 找出二叉树上任意两个结点的最近共同父结点。
- 微软面试题: 找出二叉树上任意两个结点的最近共同父结点。
- 微软面试题: 找出二叉树上任意两个结点的最近共同父结点。
- 微软,Google面试题 (4) —— 在二叉树中找出和为某一值的所有路径
- 剑指offer——面试题39:二叉树的深度
- 剑指offer——面试题39:二叉树的深度
- 微软,Google面试题 (27) —— 二元树的深度
- 面试题39:二叉树的深度
- 剑指Offer面试题55:二叉树的深度
- 面试题39:二叉树的深度
- 剑指Offer面试题39(Java版):二叉树的深度
- 剑指Offer----面试题39(1):二叉树的深度
- 微软,Google面试题 (12) —— 从上往下遍历二叉树
- 层次遍历二叉树 ——微软面试题
- 微软面试题:在排序数组中,找出给定数字的出现次数
- 找出二叉树的最小深度
- 面试题28:二叉树的深度
- 剑指Offer面试题39(Java版):二叉树的深度
- 【剑指offer】面试题39:二叉树的深度
- 【剑指offer】面试题55(1):二叉树的深度