Google Interview Question

return the deepest node in a binary tree.

Interview Answers

Anonymous

Feb 28, 2015

last node in bfs

4

Anonymous

Feb 16, 2016

But implementation wise, DFS is much easier! To store the deepest node info, you should get the global variable like Node and deepestLevel to be accessible for all DFS calls easily! :) public class DeepestNode{ Node deepestNode; int deepestLevel = -1; public Node runDeepestNode(Node root){ runDFS(root, 0); System.out.print(deepestLevel); return deepestNode; } private void runDFS(Node root, int level){ if (root == null) return; if (level > deepestLevel){ deepestLevel = level; deepestNode = root; } runDFS(root.left, level + 1); runDFS(root.right, level + 1); } }

Anonymous

Oct 18, 2016

I agree with Habib's approach. Here it is in Python class Node: def __init__(self, val): self.val = val self.left = None self.right = None def getMaxDepth(self, prevDepth): curDepth = prevDepth + 1 maxDepth = curDepth if self.left != None: maxDepth = max(self.left.getMaxDepth(curDepth), maxDepth) if self.right != None: maxDepth = max(self.right.getMaxDepth(curDepth), maxDepth) return maxDepth # Here are some tests root = Node(4) root.right = Node(5) root.right.right = Node(6) root.right.right.right = Node(7) root.left = Node(3) root.left.left = Node(2) print root.getMaxDepth(0) # returns depth=4