diff --git a/Leetcode_199.java b/Leetcode_199.java new file mode 100644 index 00000000..2893323c --- /dev/null +++ b/Leetcode_199.java @@ -0,0 +1,97 @@ +//way1 +/** + * 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; + * } + * } + */ + //BFS + //Travel level by level using queue.size + //Store last element + //TC: O(n); + //SC:O(n) +class Solution { + public List rightSideView(TreeNode root) { + List ans=new ArrayList<>(); + if(root==null){ + return ans; + } + + Queue queue=new LinkedList<>(); + queue.add(root); + while(!(queue.isEmpty())){ + int size=queue.size(); + for(int i=0;i rightSideView(TreeNode root) { + List ans=new ArrayList<>(); + helper(root,0,ans); + return ans; + } + + private void helper(TreeNode root,int level, List ans){ + if(root==null){ + return; + } + + if(ans.size()==level){ + ans.add(root.val); + }else{ + ans.set(level,root.val); + } + + helper(root.left,level+1,ans); + helper(root.right,level+1,ans); + } +} diff --git a/leetcode_993.java b/leetcode_993.java new file mode 100644 index 00000000..913c3f5f --- /dev/null +++ b/leetcode_993.java @@ -0,0 +1,132 @@ +//way1 +/** + * 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; + * } + * } + */ + //BFS + //Store root in queue + //Travel till the size of queue is met - level order traversal + //For every node check whether it's both left and right are equal to x and y --> if yes, siblings. Not cousion. Return false + //For every level check whether both x and y are found or not. As we have already checked and they are not siblings. So, they are cousins. Return true + //Once queue elements are processed but still x and y are not found in one level - return false + //TC: O(n) + //SC: O(n) +class Solution { + public boolean isCousins(TreeNode root, int x, int y) { + Queue queue=new LinkedList<>(); + queue.add(root); + + while(!(queue.isEmpty())){ + int size=queue.size(); + boolean xFound=false,yFound=false; + + for(int i=0;i