pre order binary tree:create, traverse( recursive, non_recursive)

#include <stdio.h>
#include <stdlib.h>

typedef struct BiTNode
{
    int data;
    BiTNode * right,*left;
}BiTNode,*BiTree;

void create_bi_tree(BiTNode * &t)
{
    int a;
    scanf("%d",&a);
    if( a == 0)
    {
        t = NULL;
    }
    else
    {
        t = new BiTNode;
        t->data = a;
        create_bi_tree(t->left);
        create_bi_tree(t->right);
    }
}

void pre_order_traverse(BiTree t)
{
    if(t)
    {
        printf("%d\n",t->data);
        pre_order_traverse(t->left);
        pre_order_traverse(t->right);
    }
}

//先序非递归遍历 
void preorder(BiTNode *BST)
{
    BiTNode * p,*s[100];
    int top = 0;
    p = BST;
    while((p != NULL) || (top > 0))
    {
        while(p != NULL)
        {
            printf("%d   ",p->data);
            s[++top] = p;
            p = p->left;
        }
        p = s[top--];
        p = p->right;
    }
}

void main()
{
    BiTree t;
    create_bi_tree(t);
    //pre_order_traverse(t);
    preorder(t);
    system("pause");
}

posted on 2012-08-16 09:42 三少_爷 阅读(82) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿

随笔分类

随笔档案

My Website

搜索

最新评论

阅读排行榜

评论排行榜