数据结构算法设计大题(二叉树)
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语言描述)