微软面试题:写程序找出二叉树的深度

简介:

一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。

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;
}

==============================================================================
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2012/03/23/2414388.html,如需转载请自行联系原作者
相关文章
|
9月前
|
C++
二叉树进阶面试题(精华总结)【C++版本】
二叉树进阶面试题(精华总结)【C++版本】
|
9月前
数据结构之二叉树及面试题讲解(二)
数据结构之二叉树及面试题讲解
65 0
|
9月前
力扣面试经典题之二叉树
力扣面试经典题之二叉树
57 0
|
5月前
|
算法
二叉树面试题
本文介绍了二叉树相关的几个经典算法问题。首先讲解了如何判断两棵树是否完全相同(LeetCode 100),并给出了代码示例。接着讨论了如何判断一棵树是否是另一棵树的子树(LeetCode 572),详细分析了子树的定义及判断方法。然后介绍了翻转二叉树(LeetCode 226)的实现方法,即在遍历时交换每个节点的左右子树。随后探讨了如何判断一棵树是否是对称的(LeetCode 101),通过对左右子树的递归比较来实现。最后分析了平衡二叉树的概念(LeetCode 110)及判断方法,并给出了优化后的代码示例。此外,还简要介绍了二叉树遍历及二叉树最近公共祖先(LeetCode 236)的问题
34 6
二叉树面试题
|
3月前
|
算法 Java
JAVA 二叉树面试题
JAVA 二叉树面试题
35 0
|
6月前
|
存储 安全 Java
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别;什么是程序计数器,堆,虚拟机栈,栈内存溢出,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
|
6月前
|
Go 数据库 UED
[go 面试] 同步与异步:程序执行方式的不同之处
[go 面试] 同步与异步:程序执行方式的不同之处
|
8月前
|
SQL 存储 前端开发
程序技术好文:面试知识点六:JavaWeb
程序技术好文:面试知识点六:JavaWeb
56 1
|
9月前
|
Python
2024年最新【Python】程序的组织结构:顺序结构,2024年最新46道面试题带你了解中高级Python面试
2024年最新【Python】程序的组织结构:顺序结构,2024年最新46道面试题带你了解中高级Python面试
2024年最新【Python】程序的组织结构:顺序结构,2024年最新46道面试题带你了解中高级Python面试
|
7月前
|
Java 调度 Windows
Java面试之程序、进程、线程、管程和并发、并行的概念
Java面试之程序、进程、线程、管程和并发、并行的概念
38 0