Bottom-Up
有些题目是必须自底向上才能做出来的,比如balances binary tree
一般这种题目都是helper method在recursive call的同时也返回了其它更有用的信息
本质上是建立了一个Tuple
不会Bottom-Up很多时候就是因为不会postOrder Traversal
count univalue subtrees
largest BST Subtree
建立一个global variable,在判断isUnival的同时计算cnt
核心是postOrder Traversal的思想
public class Solution {
int cnt;
public int countUnivalSubtrees(TreeNode root) {
cnt = 0;
isUnival(root);
return cnt;
}
private boolean isUnival(TreeNode root){
if(root == null) return true;
boolean left = isUnival(root.left);
boolean right =isUnival(root.right);
if(left && right){
if(root.left != null && root.left.val != root.val){
return false;
}
if(root.right != null && root.right.val != root.val){
return false;
}
cnt++;
return true;
}
return false;
}
}建tuple!建tuple!建tuple!
tuple里不需要记录val,也不需要left,right
一言不合就建tuple咯
Last updated
Was this helpful?