//非递归后序遍历:
//-------------------------------------------------------------------------
//(不会破坏树)
// 有左儿子进,无左二子调用右儿子
// 无左右儿子或左右儿子均被访问过了,出栈并输出
//--------------------------------------------------------------------------
// 使用栈(不会破坏树)
// 右儿子先进栈道,再左儿子进
// 儿子进栈后,使用顶点元素, a.元素无子或有子但是已被访问过了,出栈道,标记该元素
// b.有子and未被访问过的
//栈道空了->ok
//---------------------------------------------------------------------------
// 使用栈(会破坏树)
// 右儿子先进栈道,再左儿子进
// 儿子进栈后,使用顶点元素, a.元素无子,出栈道,设置父的一个子为NULL;
// b.有子,进栈道
//栈道空了->ok
//----------------------------------------------------------------------------
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <iostream.h>
#define MaxSize 100
#define max 100
typedef char ElemType;
typedef struct node
{
后序遍历非递归3种算法
最新推荐文章于 2021-12-04 22:54:47 发布
本文介绍了非递归方式下,后序遍历二叉树的三种算法实现:1)不会破坏树的后序遍历;2)使用栈且不破坏树的后序遍历;3)使用栈且会破坏树的后序遍历。通过具体的C语言代码展示了每种方法的详细步骤和逻辑。
摘要由CSDN通过智能技术生成