題目描述:
輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度爲樹的深度。
思路:
從根節點分別遍歷左子樹的深度和右子樹的深度,然後比較之後取較大,最後加1即可。
代碼:
package offer01;
import sun.reflect.generics.tree.Tree;
public class TestNo38 {
static class TreeNode{
int val = 0;
TreeNode left = null;
TreeNode right = null;
TreeNode(int val){
this.val = val;
}
}
public static void main(String[] args) {
TreeNode root = new TreeNode(0);
TreeNode node1 = new TreeNode(2);
TreeNode node2 = new TreeNode(4);
TreeNode node3 = new TreeNode(8);
TreeNode node4 = new TreeNode(5);
root.left = node1;
root.right = node2;
node1.left = node3;
node3.left = node4;
System.out.println(new TestNo38().TreeDepth(root));
}
public int TreeDepth(TreeNode root) {
if(root == null){
return 0;
}
int left = TreeDepth(root.left);
int right = TreeDepth(root.right);
return Math.max(left+1,right+1);
}
}