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

简介:

一个树的深度等于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;
}
目录
相关文章
|
机器学习/深度学习 存储 算法
【数据结构与算法篇】 二叉树的性质(补充)
【数据结构与算法篇】 二叉树的性质(补充)
88 0
|
2月前
|
算法 Python
逆袭之路!用 Python 玩转图的 DFS 与 BFS,让数据结构难题无处遁形
在数据结构的广袤领域中,图是一种强大而复杂的结构,而深度优先搜索(DFS)和广度优先搜索(BFS)则是遍历图的两把利剑。Python 以其简洁和强大的特性,为我们提供了实现和运用这两种算法的便捷途径。
77 0
|
7月前
|
存储 算法 JavaScript
递归的递归之书:引言到第四章
递归的递归之书:引言到第四章
189 0
|
6月前
数据结构学习记录——判断是否为同一颗二叉搜索树(题意理解、求解思路、程序搭建框架、具体函数的实现)
数据结构学习记录——判断是否为同一颗二叉搜索树(题意理解、求解思路、程序搭建框架、具体函数的实现)
55 2
|
7月前
|
Linux C++
c++的学习之路:24、 二叉搜索树概念
c++的学习之路:24、 二叉搜索树概念
47 1
|
存储 NoSQL Java
当年我跳槽Java高级开发就是这么答B树和B+树区别的
今天,我给大家介绍一种面试中经常被问到数据结构树。大家可能也经常会听到二叉树、二叉查找树、AVL平衡二叉树、B树、 等等,那今天我给大家一次性讲清楚。
82 1
|
机器学习/深度学习 算法
2022 数据结构与算法《王道》学习笔记 (十二)树和二叉树 详细总结
2022 数据结构与算法《王道》学习笔记 (十二)树和二叉树 详细总结
毕业两年了,又重学了一遍二叉树遍历的三种方式
毕业两年了,又重学了一遍二叉树遍历的三种方式
147 0
毕业两年了,又重学了一遍二叉树遍历的三种方式
五大经典链表OJ题讲解
好了,我们言归正传,本期我们来讲解五大经典链表OJ题!
五大经典链表OJ题讲解
浙大版《数据结构学习与实验指导(第2版)》进阶实验8-2.3:二叉搜索树的最近公共祖先
浙大版《数据结构学习与实验指导(第2版)》进阶实验8-2.3:二叉搜索树的最近公共祖先
123 0