运用递归算法
先递归遍历出每棵子树的高度,再加上根节点
public class TreeNode {
int val = 0 ;
TreeNode left = null ;
TreeNode right = null ;
}
public class Solution {
public int getTreeHeight ( TreeNode root) {
if ( root == null ) {
return 0 ;
}
int left = getTreeHeight ( root. left) ;
int right = getTreeHeight ( root. right) ;
int result = left> right? left+ 1 : right+ 1 ;
return result;
}
@Test
public void test ( ) {
TreeNode root = new TreeNode ( ) ;
root. val= 1 ;
TreeNode left = new TreeNode ( ) ;
left. val= 2 ;
TreeNode right = new TreeNode ( ) ;
right. val= 3 ;
TreeNode left_left = new TreeNode ( ) ;
left_left. val= 4 ;
TreeNode left_right = new TreeNode ( ) ;
left_right. val= 5 ;
TreeNode right_left = new TreeNode ( ) ;
right_left. val= 6 ;
TreeNode right_right = new TreeNode ( ) ;
right_right. val= 7 ;
root. left= left;
root. right= right;
root. left. left = left_left;
root. left. right = left_right;
root. right. left = right_left;
root. right. right = right_right;
System. out. println ( new Solution ( ) . getTreeHeight ( root) ) ;
}
}