您的位置:首页 > 编程语言

每日编程10之二叉树的先序遍历的非递归版本

2013-03-03 15:41 183 查看




这是用栈模拟的一个过程,

要注意的地方是:

(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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: