二叉樹排序

2021-05-27 07:42:55 字數 1582 閱讀 9809

#include

#include

typedef struct btree

btr,*pbtr;

typedef struct btrst

stack,*pstack;

pbtr bitree=null;

/*函式功能:實現非遞迴建立二叉樹

函式原型:void creat_btree(int *a,int size)

函式引數:int *a :儲存二叉樹節點的陣列首位址

int size:節點數目

函式返回值:void

優點:建立的二叉樹按中序遍歷後:是從小到大有序的可以是一種排序演算法

*/void creat_btree(int *a,int size)

}else

while(1)

else

}else

}else

else

}else

}    

}}   }/*

函式功能:實現遞迴前序遍歷二叉樹

函式原型:void preorder(pbtr head)

函式引數:pbtr :儲存二叉樹根節點

函式返回值:void 

*/void preorder(pbtr p)

}/*函式功能:實現遞迴中序遍歷二叉樹

函式原型:void midorder(pbtr head)

函式引數:pbtr :儲存二叉樹根節點

函式返回值:void

*/void midorder(pbtr p)

}/*函式功能:實現遞迴中序遍歷二叉樹

函式原型:void postorder(pbtr head)

函式引數:pbtr :儲存二叉樹根節點

函式返回值:void

*/void postorder(pbtr p)

}/*函式功能:遞迴求二叉樹的深度

函式原型:int btreedepth(pbtr head)

函式引數:pbtr :儲存二叉樹根節點

函式返回值:int :二叉樹的深度

*/int btreedepth(pbtr head)

else

else

}return h; 

}/*主函式 main()作測試用*/

#define n 12

int main()

;printf("非遞迴建立建立二叉樹..../n");

creat_btree(a,n);

printf("前序遍歷:      ");

preorder(bitree);

printf("/n非遞迴建立建立二叉樹後中序遍歷就是按照由小到大排序");

printf("/n中序遍歷:      ");

midorder(bitree);

printf("/n後續遍歷:      ");

postorder(bitree);

printf("/n二叉樹的深度是:/n");

printf("%4d/n",btreedepth(bitree));

getchar();

}

二叉樹,排序二叉樹

說到二叉樹,這可是資料結構裡面的非常重要的一種資料結構,二叉樹是樹的一種,本身具有遞迴性質,所以基於二叉樹的一些演算法很容易用遞迴演算法去實現。作為一種非線性結構,比起線性結構還是相對複雜的,很多人甚至看不懂演算法的意思,不能理解。其實一開始接觸這些東西還是挺暈的,不過你多看幾遍,上機實現可能你就會...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...