資料結構與演算法分析筆記與總結(java實現)--二叉樹11:二叉樹的深度__JAVA

來源:互聯網
上載者:User

題目:輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

思路:所謂的深度是指從根結點到葉子結點的最長的路徑的長度,即路徑上的結點的數目。分析問題,輸入根結點root,求它的深度需要先求出root左右子樹的深度,取其較大值,然後加1就是當前樹的深度了,即顯然這是一個對二叉樹後序遍曆進行改編的遞迴過程,設計一個遞迴函式,輸入個結點root,返回這個根結所在的樹的深度。

遞推關係是:

leftDepth=this.process(root.left); 

rightDepth=this.process(root.right);

returnMath.max(leftDepth, rightDepth)+1;

邊界條件:

If(root==null)return 0;

即對於空子樹結點,顯然它的深度是已知的,為0,最為邊界條件或者初始條件。

這是一個基本的遞迴函式構造過程,很簡單,只有一個傳回值。

 

//求深度,先求左右子樹的深度,再求當前樹的深度。對後序遍曆的遞迴過程進行改造即可

publicclass Solution {

    public int TreeDepth(TreeNode root) {

       //特殊輸入

        if(root==null) return 0;

       //調用遞迴函式解決問題

        return this.process(root);

    }

   //設計一個遞迴函式用來求出一棵二叉樹的深度

    private int process(TreeNode root){

       //遞迴函式的邊界條件

        if(root==null) return 0;

       //①求左子樹的深度

        int leftDepth=this.process(root.left);

       //②求右子樹的深度

        int rightDepth=this.process(root.right);

       //③處理當前結點,求當前樹的深度

        intdepth=Math.max(leftDepth,rightDepth)+1;

       //返回結果

        return depth;

    } }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.