Question d’entretien chez Google

return the deepest node in a binary tree.

Réponses aux questions d'entretien

Utilisateur anonyme

28 févr. 2015

last node in bfs

4

Utilisateur anonyme

16 févr. 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); } }

Utilisateur anonyme

18 oct. 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