首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于删除二叉树节点的非递归算法思想?解决思路

2012-02-24 
关于删除二叉树节点的非递归算法思想?怎么用非递归的方式删除二叉树中值为val的节点,请给出思想即可谢谢[

关于删除二叉树节点的非递归算法思想?
怎么用非递归的方式删除二叉树中值为val的节点,请给出思想即可   谢谢

[解决办法]
删除节点

先找到该节点
然后判断3种情况...
1:叶子
2:有2个根节点
3:有1个根节点
[解决办法]
非递归的方式寻找值为val的结点,可以用栈来实现,假如要中序遍历,则根结点先进栈,然后左结点进栈,而右结点再根结点出栈后进栈。至于删除这个结点,按照楼上说的,那本清华版的《数据结构》也讲的挺清楚的。
[解决办法]
如果值为 "val "的结点不是叶子,删除了这个结点后,它的子树(subtree)怎么办?题目中并没有指明这个二叉树的类型(BST, Full, Complete).
[解决办法]
所以就需要说明这个二叉树的具体类型了啊,你题意说的不清,如果是要删除元素,我猜想你哪个二叉树应该是二叉排序树(BST),好像再数据结构中的动态查找中讨论过这个问题。

热点排行