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

Posted javabai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构算法设计大题(二叉树)相关的知识,希望对你有一定的参考价值。

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

           二叉链表的结点类型为:

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循环后打印右子树

二 、未完待续

以上是关于数据结构算法设计大题(二叉树)的主要内容,如果未能解决你的问题,请参考以下文章

数据结构算法设计——统计二叉树叶子结点的个数,并输出结果

挑战程序设计竞赛(算法和数据结构)——8.4二叉树的遍历的JAVA实现

数据结构与算法王道考研数据结构与算法2022配套大题第四章(java语言描述)

设计一个算法把二叉数的叶子结点按从左到右的顺序连成一个单链表,二叉树按ldchild-rchild方式存储,?

数据结构(C语言版) 树和二叉树 算法设计Demo5

挑战程序设计竞赛(算法和数据结构)——8.3二叉树的表达的JAVA实现