二叉樹建立與查詢

2021-05-22 11:10:45 字數 1593 閱讀 8748

#include

typedef struct treestr_tree,*link_tree;

link_tree creat_tree(link_tree boot,int *p,int len)

if(pnode->data>new->data)

pnode->left=new;

else

pnode->right=new;  

}return boot;

}//***********************************forder()*********************

void forder(link_tree boot)

}//*************************************morder()********************

void morder(link_tree boot)

}//******************************lorder()**************************

void lorder(link_tree boot)

}//***************************find()*****************************

void find(link_tree boot,int num)

else

}if(boot==null)

printf("no such number!/n");

}//***********************************lfind()*********************

link_tree lfind(link_tree boot,int num)

return null;

}//**************************************main()********************

main()

;//for(i=1;i<100;i++)

//   a[i]=random()%10

int length=9;

boot=creat_tree(boot,a,length);

p=boot;

printf("the midorder is :/n");

morder(boot);

printf("/n");

printf("the forder is:/n");

forder(boot);

printf("/n");

printf("the lorder is:/n");

lorder(boot);

printf("/n");

printf("input you want to search number:");

scanf("%d",&num);

find(boot,num);

findnum=lfind(boot,num);

if(findnum==null)

printf("no this number!/n");

else

printf("find!/n");

}

建立二叉樹 後序建立二叉樹

由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...

二叉查詢樹與平衡二叉樹

二叉查詢樹的性質 對於樹中的每乙個節點x,它的左子樹中所有關鍵字值小於x的關鍵字值,它的右子樹中的所有關鍵字值大於x的關鍵字值。二叉查詢樹的平均深度為o logn 下面看一下它的相關的操作函式。刪除乙個二叉樹 遞迴形式 void makeempty treenode root 在二叉查詢樹中找都某個...

二叉樹 二叉查詢樹

構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...