【发布时间】:2019-02-19 03:02:51
【问题描述】:
我在一次采访中被问到这个问题。考虑一棵二叉树,我们需要打印最长路径的长度,其中每个元素相差 1。
EG:
6
/ \
5 7
/ \ / \
2 4 8 9
答案:5 (4,5,6,7,8)
如何做到这一点? 我开发了一种算法来打印从根到叶的增加路径,但我不打算开发一个跟踪两个子树上的路径的算法。
EDIT:修改后需要取回原来的树。
【问题讨论】:
-
修改树并跟踪它以恢复原始树是愚蠢的。相反,通过检查是否
Math.Abs(node.value - parent.value) > 1来跳过树中差异大于一的部分。如果这是真的,那么沿着这条路走下去就没有意义了。
标签: algorithm data-structures tree binary-tree