【leetcode】二叉樹的遞迴遍曆以及最大深度的求解(Java)

來源:互聯網
上載者:User

遞迴是非常神奇的方法,代碼看起來很簡潔。

對二叉樹的遍曆和求最大深度可以用遞迴的方法,主要思路就是遍曆左子樹,再遍曆右子樹。如果左子樹上面的結點,有右孩子,則調用右子樹的方法;遍曆到左子樹的分葉節點的時候,返回,開始遍曆右子樹。如果右子樹上面的結點有左孩子,則調用左子樹的方法,遍曆到右子樹的葉子結點的時候,程式結束。

static void scanNodes(TreeNode root){if(root==null){return;}System.out.println(root.val); //先序遍曆scanNodes(root.left);//System.out.println(root.val); 中序遍曆scanNodes(root.right);//System.out.println(root.val); 後序遍曆}
求二叉樹的最大深度,也是這個思路,只需添加個返回值即可

static int getDepth(TreeNode root){if(root==null){return 0;}int left=getDepth(root.left);int right=getDepth(root.right);return left>right?left+1:right+1;}
下面附上,完整的測試代碼,裡面有二叉樹結點的定義,大家一看就懂

class  TreeNode{TreeNode left;TreeNode right;int val;TreeNode(int val){this.val=val;}//返回二叉樹的深度static int getDepth(TreeNode root){if(root==null){return 0;}int left=getDepth(root.left);int right=getDepth(root.right);return left>right?left+1:right+1;}static void scanNodes(TreeNode root){if(root==null){return;}System.out.println(root.val); //先序遍曆scanNodes(root.left);//System.out.println(root.val); 中序遍曆scanNodes(root.right);//System.out.println(root.val); 後序遍曆}public static void main(String[] args) {TreeNode root=new TreeNode(1);TreeNode left1=new TreeNode(2);TreeNode left2=new TreeNode(3);TreeNode right1=new TreeNode(4);//建立一棵樹root.left=left1;left1.right=left2;root.right=right1;scanNodes(root);System.out.println("樹的深度是:"+getDepth(root));}}
運行結果如下:

1

2

3

4

樹的深度是:3


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.