心得:
這題是典型的遞迴題目,題目要求找到二元樹最深的層級為多少。
這題的解法很簡單,先宣告兩個變數分別來儲存左邊與右邊的層級,首先判斷左邊是否為空,若非為空值則會繼續搜尋此節點的子節點是否為空,搜尋完畢後再一併回傳至第一層的left變數裡,右邊反之,最後在比較左右兩邊哪個最大,最大的數字即為二元樹的層級。
問題:
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
答案:
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x; } * } */ public class Solution { public int MaxDepth(TreeNode root) { if (root == null) { return 0; } int left = 1; int right = 1; if (root.left != null) { left += MaxDepth(root.left); } if (root.right != null) { right += MaxDepth(root.right); } return right > left ? right : left; } }
參考: