编写非递归算法求二叉搜索树中关键字最小的元素。

如题所述

关键字最小的元素应该是最左的孩子,下面给出递推和非递归的代码

//查找最小关键字,空树时返回NULL

PNode searchMin(PNode root)

{

 if(root == NULL)

  return NULL;

 if(root->left == NULL)

  return root;

 else  //一直往左孩子找,直到没有左孩子的结点

     return searchMin(root->left);

}

//非递推查找最小关键字

PNode searchMin2(PNode root)

{

 if(root == NULL)

  return NULL;

 while(root->left != NULL)

   root = root->left;

 return root;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-07
大学生做的,
第2个回答  2015-01-04
在做课程设计还是毕业设计呀追问

老师留的作业。。

二叉树先序非递归遍历C语言算法
\/*---递归---先序建立二叉树---*\/void CreateBiTree(bitree **T) { \/\/按先序次序输入二叉树中的结点的值(一个字符),空格字符表示空树, \/\/构造二叉链表表示二叉树 char ch; scanf("%c",&ch); if(ch=='#') *T=NULL; else{ *T=(bitree * )malloc(sizeof(bitree)); if(!*T) exit(1)...

如何用非递归算法求二叉树的高度
if(T==null)return0;intfront=-1,rear=-1;//front出队指针 rear入队指针intlast=0,level=0;//last每一层的最右指针 (front==last时候一层遍历结束level++)BiTreeQ[Maxsize];//模拟队列Q[++rear]=T;BiTreep;while(front<rear){ p=Q[++front];//开...

...请写出计算二叉树中度为2的结点数目的非递归算法
上面的伪代码实际上就是图的深度遍历,二叉树算是一种特殊的图。具体的写法可以搜索一下就可以找到。

设计非递归算法,利用平衡因子求二叉平衡树的高度
loop就是树高度

编写非递归算法,求二叉树中叶子结点的个数
{ int

设二叉树以二叉链表为存储结构,编写一个后续遍历二叉树的非递归算法
define STACKINCREMENT 10 define OK 1 define ERROR 0 define TRUE 1 define FALSE 0 define OVERFLOW -2 typedef char TElemType;typedef int Status;typedef char SElemType;typedef struct BiTNode { TElemType data;struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;typedef struct { BiTree *...

数据结构先序构建一棵二叉树,中序非递归遍历二叉树的程序
\/\/先序遍历二叉树T的非递归算法 while(!(T==NULL&&top==NULL)){ if(T){ printf("%d ",T->data);push(T);T=T->lchild;} else { T=(BiTree)pop();T=T->rchild;} } } Status InOrderTraverse(BiTree T){ \/\/中序遍历二叉树T的递归算法 if (T){ if (T->lchild)InOrder...

二叉树的层次遍历(非递归)可否借助栈来实现?
1.先序遍历非递归算法 define maxsize 100 typedef struct { Bitree Elem[maxsize];int top;}SqStack;void PreOrderUnrec(Bitree t){ SqStack s;StackInit(s);p=t;while (p!=null || !StackEmpty(s)){ while (p!=null) \/\/遍历左子树 { visite(p->data);push(s,p);p=p->lc...

跪求!!10分奉上!统计二叉树结点个数的算法 非递归
必须说明的是,非递归思想一般都需要额外栈或队列结构的支持。下面来看一下关于统计二叉树结点个数的非递归算法设计:1、将根结点插入队列。2、判断队列是否为空,非空执行第三步,否则执行第四步退出循环。3、从队列中取出一个结点,同时将取出结点的儿子结点插入队列。此外,将计数器加1,再转到第二...

二叉树的深度算法怎么算啊
二叉树的深度算法:一、递归实现基本思想:为了求得树的深度,可以先求左右子树的深度,取二者较大者加1即是树的深度,递归返回的条件是若节点为空,返回0 算法:1 int FindTreeDeep(BinTree BT){ 2 int deep=0;3 if(BT){ 4 int lchilddeep=FindTreeDeep(BT->lchild);5 int rchilddeep=Find...

相似回答