删除二叉树的节点

来源:5-8 二分搜索树节点的删除(Hubbard Deletion)

慕设计6262276

2021-04-15

找到前驱和后继后,交换两个节点的键值和Val值也是可以的把

写回答

1回答

liuyubobobo

2021-04-15

可以。


但通常在算法学习中,对于链式结构的学习,我们都避免修改节点的值,而是靠操作 Node 完成。


一方面是因为,在面试问题中,很多时候考察的关键是如何处理“指向”。比如经典的链表反转问题,我们可以很容易地遍历链表内容,把遍历结果放到一个数组中,然后反向遍历数组,正向再遍历链表,对链表结果依次赋值。不过这不是大多数面试官想要的答案。


而在实际生产环境中,有的时候,我们可能因为权限原因,无法修改一个“结构体”内部的内容;有的时候,节点不是内存里的数据这么简单,比如是网络拓扑结构,我们只能修改指向;还有的时候,因为值是非常大的,所以交换值是耗时的,改变指向是性能最优的做法。


不过依然是,如果没有这些问题的话,这样做可以完成删除操作。


继续加油!:)


1
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程