Sollicitatievraag bij Google

return the deepest node in a binary tree.

Antwoorden op sollicitatievragen

Anoniem

28 feb 2015

last node in bfs

4

Anoniem

16 feb 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); } }

Anoniem

18 okt 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