這是用棧模擬的一個過程,
要注意的地方是:
(1)入棧的順序是先右子樹,後左子樹,這是才能保證出棧是先左後右
初始化時:若根節點不爲NULL,將根節點入棧,否則return;
核心處理操作:打印數節點元素值
循環結束條件:棧爲空
核心代碼:
int TreePrint_preorder_nonRecur(BTree root)
{
if(!root)
return 0;
struct stack *s;
initStack(s);
push(s,root);
struct node *pNode;
while(!isStackEmpty(s))
{
pop(s,pNode);
printf("%d ",pNode->data);
if(pNode->right) push(s,pNode->right);
if(pNode->left) push(s,pNode->left);
}
}