Terminologies
Root node - the topmost element is called the root of the binary tree
Leaf Node - the node that does not have any children is the leaf node
Level of Binary Tree -
horizontal distance of Binary Tree -
horizontal distance of the root is 0
horizontal distance of the left child = horizontal distance of its parent minus 1
horizontal distance of the right child = horizontal distance of its parent plus 1
Predecessor -
successor -
Binary Tree Problems
1. Inorder traversal (Left root Right)
while(root != null){
inorder(root.left)
print(root.data)
inorder(root.right)
}
2. Preorder traversal (root Left right )
while(root != null){
print(root.data)
preorder(root.left)
preorder(root.right)
}
3. Postorder traversal (Left right root)
while(root != null){
postorder(root.left)
postorder(root.right)
print(root.data)
}
4.Level order traversal
5. Morris Inorder traversal (left right root)
current = root
previous = null
while(root != null){
if(root.left == null){
}else{
}
}
6. Morris Preorder traversal
7. Left View of Binary Tree
There are two approaches, recursive & iterative approach
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ArrayList<Integer> list = new ArrayList<Integer>(); ArrayList<Integer> leftView(Node root) { leftView(root,0); return list; } void leftView(Node current, int level){ if(current != null){ if(list.size() == level){ list.add(current.data); } leftView(current.left, level + 1); leftView(current.right, level + 1); } } |
8. Right view of Binary tree
9. Top view of binary tree
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | class Pair{ public Node node; public int distance; public Pair(Node node, int distance){ this.node = node; this.distance = distance; } } class Solution { //Function to return a list of nodes visible from the top view //from left to right in Binary Tree. static ArrayList<Integer> topView(Node root) { ArrayList<Integer> list = new ArrayList<Integer>(); Queue<Pair> queue = new LinkedList<Pair>(); TreeMap<Integer,Integer> map = new TreeMap<Integer,Integer>(); Pair firstElement = new Pair(root,0); queue.add(firstElement); while(queue.size() != 0){ Pair pair = queue.poll(); Node node = pair.node; if(!map.containsKey(pair.distance)){ map.put(pair.distance,node.data); } if(node.left != null){ queue.add(new Pair(node.left, pair.distance - 1)); } if(node.right != null){ queue.add(new Pair(node.right, pair.distance + 1)); } } for(Integer key : map.keySet()){ list.add(map.get(key)); } return list; } } |
10. Bottom view of Binary Tree
11. LCA - Least Common Ancestor
Comments
Post a Comment