二叉树前序和后序遍历的栈实现
一、前序遍历的栈实现
Pre-order visit with stack: A
tempNode | 进出栈 |
---|---|
A | push(A) |
A.leftChild | / |
Pre-order visit with stack: A B
tempNode | 进出栈 |
---|---|
B | push(B) |
A.leftChild | / |
null | pop(B) |
B.rightChild | / |
Pre-order visit with stack: A B D
tempNode | 进出栈 |
---|---|
D | push(D) |
A.leftChild | / |
null | pop(D) |
D.rightChild | / |
null | pop(A) |
A.rightChild | / |
这里注意与中序遍历的区别,虽然到目前为止,二叉树个节点的遍历顺序与站内元素都与中序遍历一样,但栈的作用完全不一样。在中序遍历中,栈中元素的出栈顺序即为遍历的顺序,而在前序遍历中,栈中元素的进栈顺序即为遍历顺序。
Pre-order visit with stack: A B D C
tempNode | 进出栈 |
---|---|
C | push(C ) |
C.leftChild | / |
Pre-order visit with stack: A B D C E
tempNode | 进出栈 |
---|---|
E | push(E) |
E.leftChild | / |
null | pop(E) |
E.rightChild | / |
Pre-order visit with stack: A B D C E F
tempNode | 进出栈 |
---|---|
F | push(F) |
F.leftChild | / |
null | pop(F) |
F.rightChild | pop(F) |
null | pop(C ) |
C.rightChild | / |
null | / |
结束遍历。