二叉树的深度

Posted zhudingtop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的深度相关的知识,希望对你有一定的参考价值。

【问题】输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

【思路】递归解法:一般和深度有关的我们都可以使用dfs算法,然后使用一个res用于记录深度,每次递归到叶节点,将res和max进行比较,将最大的值存入max变量中,结束递归!这样我们就可以找到每一条路径深度最大的哪一个路径了!

class Solution 
public:
    int TreeDepth(TreeNode* pRoot)
        return pRoot ? max(TreeDepth(pRoot->left),TreeDepth(pRoot->right))+1 :0;
    
;

第二种使用非递归的思路,我们都知道层次遍历,每次都是遍历完上一层才会去下一层遍历。因此,我们可以对层次遍历加以修改!设置一个depth变量,如果遍历完一层,则让depth++。层次遍历需要队列的辅助!

/*
struct TreeNode 
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) 
    
;*/
class Solution 
public:
    int TreeDepth(TreeNode* pRoot)
    
        if(pRoot == nullptr) return 0;
        queue<TreeNode*> que;
        que.push(pRoot);
        int depth = 0;
        while(!que.empty())
            int size = que.size();
            depth++;
            while(size--)
                TreeNode* tmp = que.front();
                que.pop();
                if(tmp->left) que.push(tmp->left);
                if(tmp->right) que.push(tmp->right);
            
        
        return depth;
    
;

 

以上是关于二叉树的深度的主要内容,如果未能解决你的问题,请参考以下文章

代码随想录算法训练营第16天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

二叉树--二叉树的最大深度

剑指Offer对答如流系列 - 二叉树的深度

数据结构实验之二叉树八:(中序后序)求二叉树的深度

(二叉树)原来Java 求解二叉树的最大深度如此简单 !!!

.设一棵二叉树的深度为k,则该二叉树中最多有( )个结点.