* 二叉树的前序遍历的非递归实现--- 根节点 -- 左孩子--右孩子 *先访问根节点 再访问左子树,最后访问右子树。而对于每个子树来说,又按照同样的访问顺序进行遍历。 * Created by Administrator on 2016/9/5. */ public class BinaryTree{ public static void fun(TreeNode pHead){ Stack<TreeNode> stack ...
弹出的顺序是头左右 /** * 步骤: * 1、头节点入栈 * 2、每次从栈中弹出一个节点var * 3、处理(打印)var * 4、先把var的右节点压入栈(如果有的话),在把var左节点压入栈(如果有的话)<!--如果想要头右左遍历的话,改一下这个步骤的先后顺序就好了--> * 5、执行步骤二(周而复始) */ public stati...
stack.push(root);while(!stack.isEmpty()){//若栈非空TreeNode node =stack.pop(); System.out.print(node.val+ " ");if(node.right !=null)//先将右孩子结点压入堆栈stack.push(node.right);if(node.left !=null)//然后将左孩子结点压入堆栈stack.push(node.left); } } 三、先序遍历非递归(...
* (3)若栈非空,则取出栈顶元素,并读取访问数据,而后结点向右孩子移动 /** 中序遍历,使用栈操作 * 思想: * (1)若栈非空或者结点非空,则进入循环 * (2)若结点非空,则将结点压入栈中,结点向左孩子移动,一直到最左边 * (3)若栈非空,则取出栈顶元素,并读取访问数据,而后结点向右孩子移动*/publicvoidi...
//先序遍历二叉树 void PreOrder(BiTree bt) { if(bt){ printf("%c",bt->ch); PreOrder(bt->Lchild); PreOrder(bt->Rchild); } } //中序遍历二叉树 void InOrder(BiTree bt) { if(bt){ InOrder(bt->Lchild); printf("%c",bt->ch); ...
java 后序遍历 非递归实现 java先序遍历非递归算法 在C语言中我们实现先序遍历树的非递归算法往往是这样的: void prev (NODE *root) { NODE *p, *node[MAX]; int top=0; p=root; do { while( p!=NULL) {printf(“%d,”, root->data) ;...