【发布时间】:2015-02-10 18:46:11
【问题描述】:
我想找到 T 的鞍点,二叉树,如果有的话。 鞍点在其所有祖先中具有最小值,但在其所有后代中具有最大值。如果叶子的值低于其所有祖先的值,那么它就是这样的鞍点。
示例树:
F:15
E:16 H:17
B:14 G:16 I:8
A:8 C:7
D:5
B 是这样一个鞍点,因为 14 小于 16 和 15,但也大于 8、7 和 5。A、C、D 和 I 是其他鞍点。
我试图想办法递归检查每个子树并证明父节点是其所有后代中的最大值。但是,由于C(16)是其所有后代中的最大值但大于F(15),所以它不是鞍点,所以这种方法是不正确的。
最好的解决方法是什么?
【问题讨论】:
-
A,B,C,I 是鞍点。
-
是的,A、B、C、I、D。对不起。
标签: algorithm recursion binary-tree