浙江工商大学三培训资料.ppt

浙江工商大学三培训资料.ppt

7.3 二叉树的遍历 7.3.3 递归遍历的非递归模拟 1、前序遍历的非递归模拟 为了模拟递归,需要设置一个栈结构,用以保存指向结点的指针,以便在遍历某结点的左子树之后,由该指针找到该结点的右子树。 前序遍历二叉树的非递归的方法是:从二叉树的根结点开始,令指针变量p指向根结点,访问当前结点p,并将p压入栈中,然后令p指向当前指向结点的左孩子结点。若p不为空,继续访问当前结点p,并将p压入栈中。如此重复进行,直到p为空时,从栈中弹出栈顶元素赋给指针变量p,并令p指向它当前指向结点的右孩子结点。重复上述过程,当p为空并且栈也为空时,遍历结束。 算法程序;见P156 前序非递归遍历过程:见表7-1 P157 7.3 二叉树的遍历 2、后序遍历的非递归模拟 在后序遍历二叉树的过程中,对一个结点访问之前,要两次历经这个结点。第一次是由该结点找到其左孩子,遍历其左子树,遍历完左子树,返回该结点;第二次是由该结点找到其右孩子,遍历其右子树,遍历完右子树,返回该结点,这时才访问该结点。因此,用后序遍历二叉树时,也需要设置一个栈,用来保存指向所经历结点的指针。由于一个结点要进、出栈各两次,每次对其操作不同,为了区别,设置一标志flag。 1 第一次出栈,结点不能访问 flag=

文档评论(0)

1亿VIP精品文档

相关文档