Untitled
unknown
java
a year ago
3.6 kB
9
Indexable
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public ArrayList<Integer> leftMostDriverTwo(TreeNode node, TreeNode parentNode, double deepestLevel, double level, ArrayList<Integer> numsAdded){ if(node == null){ return numsAdded; } else if(level == deepestLevel){ if(parentNode.left == null && parentNode.right != null){ numsAdded.add(parentNode.right.val); return numsAdded; } else if(parentNode.left != null){ System.out.println(numsAdded); numsAdded.add(parentNode.left.val); return numsAdded; } else { numsAdded.add(parentNode.val); return numsAdded; } } else{ if(node.left != null && node.right != null){ leftMostDriverTwo(node.left,node,deepestLevel,level+1,numsAdded); leftMostDriverTwo(node.right,parentNode,deepestLevel,level+1,numsAdded); } else if(node.left == null && node.right != null){ return leftMostDriverTwo(node.right,node,deepestLevel,level+1,numsAdded); } else if(node.left != null){ return leftMostDriverTwo(node.left,node,deepestLevel,level+1,numsAdded); } else{ return leftMostDriverTwo(null,node,deepestLevel,level,numsAdded); } return numsAdded; } } public double leftMostDriver(TreeNode node, TreeNode parentNode, double level){ if(node == null){ return (int)level; } else{ if(node.left != null && node.right != null){ return Math.max(leftMostDriver(node.left,node,level+1),leftMostDriver(node.right,parentNode,level+1)); } else if(node.left == null && node.right != null){ return leftMostDriver(node.right,node,level+1); } else if(node.left != null){ return leftMostDriver(node.left,node,level+1); } else{ return leftMostDriver(null,node,level); } } } public int findBottomLeftValue(TreeNode root) { double leftDeepest = 0; double rightDeepest = 0; double deepest = 0; if(root.left != null){ leftDeepest = leftMostDriver(root.left,root.left,1); } if(root.right != null){ rightDeepest = leftMostDriver(root.right,root.right,1); } if(leftDeepest == 0 && rightDeepest == 0){ return root.val; } if(leftDeepest >= rightDeepest){ //System.out.println("left deepest is: "+leftDeepest + " " +"deepest is: " + deepest); deepest = leftDeepest; ArrayList<Integer> nums = leftMostDriverTwo(root.left,root.left,deepest,1,new ArrayList<>()); return nums.get(0); } else { //System.out.println("Right deepest is: "+rightDeepest + "deepest is: " + deepest); deepest = rightDeepest; ArrayList<Integer> nums = leftMostDriverTwo(root.right,root.right,deepest,1,new ArrayList<>()); return nums.get(0); } } }
Editor is loading...
Leave a Comment