voidPreOrderTraversal(BinTree BT){ BinTree T = BT; Stack S = CreatStack(Maxsize); //建立一个堆栈 S While(T || !IsEmpty(S)){ //当 T 存在或者 S 非空时,S 为空时说明退完了 while(T){ //当 T 存在时 Push(S,T); printf("%5d", T->Data); T = T->Left; } if(!IsEmpty(S)){ //如果 S 非空 T = S.top(); S.pop(); T = T->Right; } } }
difference with Inorder traversal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
voidPreOrderTraversal(BinTree BT){ BinTree T = BT; Stack S = CreatStack(Maxsize); //建立一个堆栈 S While(T || !IsEmpty(S)){ //当 T 存在或者 S 非空时,S 为空时说明退完了 while(T){ //当 T 存在时 Push(S,T); T = T->Left; } if(!IsEmpty(S)){ //如果 S 非空 T = S.top(); printf("%5d", T->Data); S.pop(); T = T->Right; } } }