zoukankan      html  css  js  c++  java
  • 二叉树的深度

    题目描述

    输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
     
     
     
     
    提交链接:点击
     
     
     
     
    思路:
       递归版:

              1.如果只有根节点,那么深度为1
            2.如果根节点只有右子树或者左子树,那么深度为右子树或左子树深度+1,即加上根节点
            3.如果根节点有右子树和左子树,那么深度为右子树和左子树深度最大值+1

            非递归版:

           层次遍历,用队列。每遍历一层,count加1;
          每一层,使用一个len变量记录该层的结点数,也就是队列的当前长度,从队列里面依次出队列len长度,再将下一层节点加入队列。
     
    代码:
    /*
    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)
        {
            //1.如果只有根节点,那么深度为1
            //2.如果根节点只有右子树或者左子树,那么深度为右子树或左子树深度+1,即加上根节点
            //3.如果根节点有右子树和左子树,那么深度为右子树和左子树深度最大值+1
            if(!pRoot) return 0;
            if(!pRoot->left && !pRoot->right) return 1;
            else if(pRoot->left && !pRoot->right) return TreeDepth(pRoot->left)+1;
            else if(!pRoot->left && pRoot->right) return TreeDepth(pRoot->right)+1;
            else return max(TreeDepth(pRoot->left),TreeDepth(pRoot->right))+1;
        }
    };
    /*
    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)
        {
            //层次遍历,用队列存储。每遍历完一层count加1
            if(!pRoot) return 0;
            queue<TreeNode *> result;
            result.push(pRoot);
            int count=0;
            while(!result.empty()){
                int len=result.size();
                count++;
                while(len--){
                    TreeNode *temp = result.front();
                    result.pop();
                    if(temp->left) result.push(temp->left);
                    if(temp->right) result.push(temp->right);
                }
            }
            return count;
        }
    };
  • 相关阅读:
    OI算法复习汇总
    B. Anatoly and Cockroaches
    c# 文件过大时清空原有内容重新写入
    c# 记录内容到txt文件
    c# 关闭和重启.exe程序
    mutex 互斥量
    mysql 事件
    <asp:Button点击查询后,调用js中函数展现加载圈
    取得<asp:TextBox中的值:
    json 相关知识
  • 原文地址:https://www.cnblogs.com/logo-88/p/9859123.html
Copyright © 2011-2022 走看看