代码随想录day18|513. 找树左下角的值112. 路径总和106. 从中序与后序遍历序列构造二叉树
class Solution {
List<Integer> list;
public int findBottomLeftValue(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
if(root != null)queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
for(int i = 0 ; i < size ; i++){
TreeNode node = queue.poll();
list = new ArrayList<>();
list.add(node.val);
if(node.right != null)queue.offer(node.right);
if(node.left != null)queue.offer(node.left);
}
}
return list.get(0);
}
}
class Solution {
public int findBottomLeftValue(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
if(root != null)queue.offer(root);
while(!queue.isEmpty()){
root= queue.poll();
if(root.right != null)queue.offer(root.right);
if(root.left != null)queue.offer(root.left);
}
return root.val;
}
}
class Solution {
public boolean hasPathSum(TreeNode root, int targetSum) {
if(root == null)return false;
if(root.left == null && root.right == null)return targetSum == root.val;
return hasPathSum(root.left , targetSum - root.val) || hasPathSum(root.right , targetSum-root.val);
}
}
class Solution {
HashMap<Integer,Integer> memo = new HashMap<>();
int[] post;
public TreeNode buildTree(int[] inorder, int[] postorder) {
for(int i = 0;i < inorder.length; i++) memo.put(inorder[i], i);
post = postorder;
TreeNode root = buildTree(0, inorder.length - 1, 0, post.length - 1);
return root;
}
public TreeNode buildTree(int is, int ie, int ps, int pe) {
if(ie < is || pe < ps) return null;
int root = post[pe];
int ri = memo.get(root);
TreeNode node = new TreeNode(root);
node.left = buildTree(is, ri - 1, ps, ps + ri - is - 1);
node.right = buildTree(ri + 1, ie, ps + ri - is, pe - 1);
return node;
}
}