这是用栈模拟的一个过程,
要注意的地方是:
(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);
}
}