非递归交换二叉树左右子树所有结点左右子树互相交换为什么不能用中序遍历

构造一个栈将根节点入栈。

p来控制左孩子一直入栈直到没有左孩子,这时p在最左边的结点

这时如果p有右孩子,就将p指向p的右孩子并将右孩子入栈。

如果没有的话p置空就行(不然的话p还是在最左边的结点,下次循环会重新循环p)

}else{ //else不能少不然每次都弹出去一个元素 p = null; //p已经被访问过了,置空下次不訪问。

我要回帖

更多关于 非递归交换二叉树左右子树 的文章

 

随机推荐