二叉树的非递归遍历

1、非递归中序遍历:遇到一个结点,就把它推入栈中,并去遍历它的左子树。遍历完左子树后,从栈顶托出这个结点并访问之,然后按照它的右链接指示的地址再去遍历该结点的右子树。

public void inorder(BinTree bt){
		 bittree p, s[M];
		 int top = -1;
		 p= bt;
		do{
			while(p!=null){
				s[++top] = p;
				p = p.lchild;
			}
			if(top >= 0){
				p = s[top--];
				visit(p);
				p = p.rchlid;
			}
		}while(top != -1 || p!= null);
		
	}

你可能感兴趣的:(二叉树)