题目
输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的/结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
解题思路
树的深度=max(左子树深度,右子树深度)+1,采用递归实现。
测试用例
1.功能测试(左斜树、右斜树、普通树)
2.边界值测试(一个结点)
3.特殊测试(null)
代码
package mySword;
import sun.reflect.generics.tree.Tree;
public class depthOfTree {
public static class TreeNode{
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val){
this.val = val;
}
}
public static int depthOfTree(TreeNode node){
if(node == null){
return 0;
}
int left = depthOfTree(node.left);
int right = depthOfTree(node.right);
return (Math.max(left, right) + 1);
}
public static void main(String[] args) {
TreeNode root = new TreeNode(0);
TreeNode node1 = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(6);
root.left = node1;
root.right = node2;
root.left.left = node3;
root.left.right = node4;
root.right.left = node5;
root.right.right = node6;
int depth = depthOfTree(root);
System.out.println(depth);
}
}
总结
1、学会用递归的思路解决问题