码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构算法设计大题(二叉树)

时间:2019-06-09 12:43:14      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:数据结构   tree   赋值   div   style   code   null   判断   lse   

一、二叉树的前序遍历,写出一种非递归算法

           二叉链表的结点类型为:

struct bnode
{
    char data;
    struct bnode *lchild,*rchild;
};
typedef struct bnode Bnode *Btree;
//*Btree是一个指针类型标识符

       前序遍历非递归算法:

void preorder (Btree t)
{
    Bnode *s[M];//设栈的容量为M
    Bnode *p=t;int top=-1;//栈为空

    while((top!=-1)||(p!=NULL))
        if(p!=NULL)//p从根结点出发,若根不为空,打印根结点
        {
            printf("%d",t->data);
            if(p->rchild!=NULL)//如果右子树不为空
                s[++top]=p->rchild;//右子树入栈,栈顶指针加一
            p=p->lchild;//右子树为空,则将左子树赋值到根结点处,判断根结点是否为空,不为空,打印根结点(即左子树)
        }
        else if(top!=-1) p=s[top--];//如果栈不为空,出栈,栈顶指针减一,栈顶将栈顶值放到根节点中,while循环后打印右子树
}

二 、未完待续

数据结构算法设计大题(二叉树)

标签:数据结构   tree   赋值   div   style   code   null   判断   lse   

原文地址:https://www.cnblogs.com/javabai/p/10993109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!