Pergunta de entrevista da empresa Google

return the deepest node in a binary tree.

Respostas da entrevista

Sigiloso

28 de fev. de 2015

last node in bfs

4

Sigiloso

16 de fev. de 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); } }

Sigiloso

18 de out. de 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