【发布时间】:2020-08-12 02:53:51
【问题描述】:
我有一个完美的二叉树,每个节点都是这样表示的
[Value, LeftNode, RightNode]
Value 是节点值,并且 每个 LeftNode 和 RightNode 都是该节点的儿子,它们也是递归的二叉树。 最后的节点(叶子)是这样表示的
[Value, [], []]
示例:
L1=[4, [], []],
L2=[5, [], []],
L3=[6, [], []],
L4=[7, [], []],
L5=[2, L1, L2],
L6=[3, L3, L4],
Tree=[1,L5 , L6].
所以我有返回最后一个左叶的函数
lastLeftLeaf([H, [], []]) ->H;
lastLeftLeaf([H, Left, Right]) ->lastLeftLeaf(Left).
在我们的示例中,它返回 4:L1 的值。 以及返回没有最后一个左叶的树的函数:它将这个叶替换为 []
withoutLastLeftLeaf([H, [], []]) ->[] ;
withoutLastLeftLeaf([H, Left, Right]) ->[H, withoutLastLeftLeaf(Left), Right].
在我们的示例中,它返回没有 L1 的树:替换为 []
这两个函数都进行相同的浏览,为了获得结果,我必须进行两次浏览,为了提高性能和效率,我想创建一个只有一次浏览的函数,它返回两个结果:最后一个左叶和没有该叶的树任何帮助,谢谢大家。
【问题讨论】:
-
“我想创建一个函数”——去做吧。
-
好吧,告诉我我怎么无法实现
标签: tree erlang binary-tree