数码资讯
二叉树非递归反序遍历算法的详细解
在前序非递归遍历、中序和后序,后序是最棘手的问题。如果我们只保留指向堆栈中的指针,这是不够的。堆栈中必须存储一些额外的信息。 有很多方法。这里只有一个。首先,定义堆栈节点的数据结构。 复制代码代码如下所示: typedef struct {节点p;int rvisited;}斯诺德 / /节点的二叉
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
在前序非递归遍历、中序和后序,后序是最棘手的问题。如果我们只保留指向堆栈中的指针,这是不够的。堆栈中必须存储一些额外的信息。
有很多方法。这里只有一个。首先,定义堆栈节点的数据结构。
复制代码代码如下所示:
typedef struct {节点p;int rvisited;}斯诺德 / /节点的二叉树的节点结构,并rvisited = = 1已由节点指向正确的节点访问P.
lastordertraverse(bitree BT){
首先,从根节点到左下角,一直向前走,堆栈中每个节点的路径。
= bt;
当(bt){
推(BT,0);在堆栈中推送两个信息,一个是节点指针,第一个是它的右节点是否已被访问。
BT = bt.lchild;
}
循环的主体,然后输入
当(堆栈为空){(!)只要堆栈不是空的
锡(Sn)= stack.gettop; / /是栈顶节点
/ /注,任意一个节点n,只要他有离开的孩子,在N组,N把孩子也必须遵循堆栈(这体现在算法的后期),所以当我们到堆栈的顶部,可以肯定的是,这个元素或无左孩子,或者把孩子已经被访问过了,所以现在我们不关心它的左孩子,我们只关心孩子的权利。
如果已经访问了正确的子元素,或者元素具有正确的子元素,则通过遍历定义,这可以是访问节点。
如果(sn.p.rchild | | {锡。rvisited!)
p = POP();
访问(P);
}
别人/ /如果其右孩子存在,rvisited是0,没有合适的孩子,然后去正确的孩子。
{
这一次,我们想让它的右子节点一直留在下面,直到最后,这个路径上的所有节点都是堆栈。
/ /当然,在节点rvisited设置为1栈,因为它的右孩子堆栈意味着孩子们将访问权之前(这是很好理解的,因为我们总是删除元素从栈顶的访问)。因此,下一次的元素在堆栈的顶部,右边的孩子会被路过的访问,所以rvisited可以设置为1。
sn.rvisited = 1;
到左下角结束时,堆栈中所有元素的路径。
P = sn.p.rchild;
而(P!= 0){
推(p,0);
P = p.lchild;
}
这一轮已经结束了,那些节点只是堆栈,我们没有它,下一个周期将很好地照顾这些节点。
}
}
有很多方法。这里只有一个。首先,定义堆栈节点的数据结构。
复制代码代码如下所示:
typedef struct {节点p;int rvisited;}斯诺德 / /节点的二叉树的节点结构,并rvisited = = 1已由节点指向正确的节点访问P.
lastordertraverse(bitree BT){
首先,从根节点到左下角,一直向前走,堆栈中每个节点的路径。
= bt;
当(bt){
推(BT,0);在堆栈中推送两个信息,一个是节点指针,第一个是它的右节点是否已被访问。
BT = bt.lchild;
}
循环的主体,然后输入
当(堆栈为空){(!)只要堆栈不是空的
锡(Sn)= stack.gettop; / /是栈顶节点
/ /注,任意一个节点n,只要他有离开的孩子,在N组,N把孩子也必须遵循堆栈(这体现在算法的后期),所以当我们到堆栈的顶部,可以肯定的是,这个元素或无左孩子,或者把孩子已经被访问过了,所以现在我们不关心它的左孩子,我们只关心孩子的权利。
如果已经访问了正确的子元素,或者元素具有正确的子元素,则通过遍历定义,这可以是访问节点。
如果(sn.p.rchild | | {锡。rvisited!)
p = POP();
访问(P);
}
别人/ /如果其右孩子存在,rvisited是0,没有合适的孩子,然后去正确的孩子。
{
这一次,我们想让它的右子节点一直留在下面,直到最后,这个路径上的所有节点都是堆栈。
/ /当然,在节点rvisited设置为1栈,因为它的右孩子堆栈意味着孩子们将访问权之前(这是很好理解的,因为我们总是删除元素从栈顶的访问)。因此,下一次的元素在堆栈的顶部,右边的孩子会被路过的访问,所以rvisited可以设置为1。
sn.rvisited = 1;
到左下角结束时,堆栈中所有元素的路径。
P = sn.p.rchild;
而(P!= 0){
推(p,0);
P = p.lchild;
}
这一轮已经结束了,那些节点只是堆栈,我们没有它,下一个周期将很好地照顾这些节点。
}
}
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。