InMobi Interview Question

write a program to print only the peripheral nodes of binary tree

Interview Answers

Anonymous

Sep 4, 2012

Java code: public void peripheralNodes(){ peripheralNodes(root); } private void peripheralNodes(Node node){ System.out.print(node.data+" "); sideNodes(node.left,"left"); leafNodes(node); sideNodes(node.right,"right"); } private void sideNodes(Node node, String side){ if(node == null) return; if(node.left == null & node.right == null) return; if(node != null && side.equalsIgnoreCase("left")) System.out.print(node.data+" "); if(side.equalsIgnoreCase("left")) sideNodes(node.left,side); else sideNodes(node.right,side); if(node != null && side.equalsIgnoreCase("right")) System.out.print(node.data+" "); } The above algo takes O(n)+O(No. of left & right nodes) Is there any other effective way ?

1

Anonymous

Jul 15, 2015

It's quite simple if you think about it. 1.Print all the left peripherals. Recurse left until you reach the end printing everything. 2.Repeat the same for the right periphery. 3. Print all the leaf nodes except the left most and the right most.