• 55 二叉树的深度


    题目描述

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

    测试序列

    功能测试(输入普通的二叉树;二叉树的左右节点都没有左/右子树)

    特殊输入测试(只有一个节点;空树)

    解题思路

    1)递归方法,取左右子树最大的深度+1。根节点也占一个深度(所以要加1)

    //实现1
    class Solution { public: int TreeDepth(TreeNode* pRoot) { if(pRoot==nullptr) return 0; if(pRoot->left==nullptr && pRoot->right==nullptr) //叶节点 return 1; return max(TreeDepth(pRoot->left),TreeDepth(pRoot->right))+1; } };
    //实现2
    class Solution {
    public:
        int TreeDepth(TreeNode* pRoot)
        {
            if(pRoot==nullptr)
                return 0;
            int nleft = TreeDepth( pRoot->left);
            int nright = TreeDepth( pRoot->right);
            return (nleft>nright)?(nleft+1):(nright+1);
        }
    };
    

      

    2)非递归写法:层次遍历

    class Solution {
    public:
        int TreeDepth(TreeNode* pRoot)
        {
            if(pRoot==nullptr)
                return 0;
            
            queue<TreeNode*> levelNodes;
            levelNodes.push(pRoot);
            int count=0;
            while(!levelNodes.empty()){
                int size=levelNodes.size();
                while(size--){
                    TreeNode* temp = levelNodes.front();
                    levelNodes.pop();
                    if(temp->left!=nullptr)
                        levelNodes.push(temp->left);
                    if(temp->right!=nullptr)
                        levelNodes.push(temp->right);
                }
                count++;
            }
            return count;
        }
    };
    

      

      

  • 相关阅读:
    抽象代数学习笔记
    WC2021 游记
    简单的数学题
    前缀和公式
    杜教筛
    [模板]BZOJ4756线段树合并
    SPOJ 694
    bzoj1367 可并堆
    莫比乌斯反演(理论)
    es6 Set数据结构
  • 原文地址:https://www.cnblogs.com/GuoXinxin/p/10595221.html
Copyright © 2020-2023  润新知