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

简介:

一个树的深度等于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;
}
目录
相关文章
|
3月前
|
存储 算法 JavaScript
递归的递归之书:引言到第四章
递归的递归之书:引言到第四章
113 0
|
1天前
|
Linux C++
c++的学习之路:24、 二叉搜索树概念
c++的学习之路:24、 二叉搜索树概念
10 1
|
8月前
|
机器学习/深度学习 算法
2022 数据结构与算法《王道》学习笔记 (十二)树和二叉树 详细总结
2022 数据结构与算法《王道》学习笔记 (十二)树和二叉树 详细总结
|
8月前
|
前端开发
头条面试题:计算目录树的深度
头条面试题:计算目录树的深度
60 0
|
10月前
|
机器学习/深度学习 算法 Java
Java实现递归及经典案例(不死神兔三种方式)
本文简单介绍了递归的概念和使用递归时的注意事项,并分享了求阶乘案例(两种方式)、不死神兔案例(三种方式)以及利用递归删除一个带内容的文件的案例;
126 0
|
前端开发
前端学习案例13-二叉树的概念和特点
前端学习案例13-二叉树的概念和特点
53 0
前端学习案例13-二叉树的概念和特点
五大经典链表OJ题讲解
好了,我们言归正传,本期我们来讲解五大经典链表OJ题!
五大经典链表OJ题讲解
【LeetCode】111. 二叉树的最小深度(BFS 解题套路框架,要会默写)
【LeetCode】111. 二叉树的最小深度(BFS 解题套路框架,要会默写)
【LeetCode】111. 二叉树的最小深度(BFS 解题套路框架,要会默写)
程序人生 - 艾滋病的深度科普
程序人生 - 艾滋病的深度科普
81 0
程序人生 - 艾滋病的深度科普

热门文章

最新文章