c語言 二叉樹的建立及其遞迴與非遞迴和層序遍歷方法

2022-06-24 08:54:08 字數 1991 閱讀 2453

以下包含有前後序的遞迴和非遞迴演算法

具體遞迴方法可以在bilibili**我的講解

一步一步的推演遞迴是如何遍歷完整個二叉樹的

#include#include

#define maxsize 20typedef

struct

nodenode;

typedef

struct

tree;

//二叉樹的建立

void insert(tree *tree,int

value)

else

temp=temp->left;

}else

else

temp=temp->right; }}

}}}//

遞迴前序遍曆法

void preorder(node *node)}//

遞迴的中序遍歷

void inorder(node *node)}//

遞迴後序遍曆法

void postorder(node *node)}//

非遞迴前序遍歷方法

void preordernonrecurion(node *node)

}}//

非遞迴中序遍歷方法

void inordernonrecurion(node *node)

if(top!=-1

) }}

} //

非遞迴後序遍曆法

void postordernonrecurion(node *node)

node *q=null;

while(top2!=-1

)

}} //

層次遍歷

void levelorder(node *node)

if(p->right!=null)}}

} int

main();

tree tree;

tree.root=null;

for(int i=0;i<7;i++)

insert(&tree,arr[i]);

printf(

"遞迴前序遍歷結果為\t

");

preorder(tree.root);

printf(

"\n\n");

printf(

"遞迴中序遍歷結果為\t

");

inorder(tree.root);

printf(

"\n\n

");

printf(

"遞迴後序遍歷結果為\t

");

postorder(tree.root);

printf(

"\n\n");

printf(

"非遞迴前序遍歷結果為\t

");

preordernonrecurion(tree.root);

printf(

"\n\n");

printf(

"非遞迴中序遍歷結果為\t

");

inordernonrecurion(tree.root);

printf(

"\n\n");

printf(

"非遞迴後序遍歷結果為\t

");

postordernonrecurion(tree.root);

printf(

"\n\n

");

printf(

"層次遍歷結果為\t\t

");

levelorder(tree.root);

printf(

"\n\n

");

}

非遞迴建立二叉樹

通過二叉鍊錶建立二叉樹,二叉鍊錶的節點結構如下 template class t struct binode 二叉樹類的結構如下 template class t class bitree 二叉樹建立的過程如下圖所示 可以利用棧來實現非遞迴建立,另外還需要建立一種棧節點結構,該結構包括 注意 sta...

二叉樹的非遞迴建立

問題描述 非遞迴建立如下圖所示的二叉樹 名 稱 建立二叉樹 非遞迴 作 者 brooke gao 時 間 2013 8 21 include include include define stacksize 50 define bitree size tree tree size define bi...

二叉樹的非遞迴建立

新手一枚,希望記下自己寫的 希望各位親能夠給我提出意見和建議 include include define max 999 max表示結點是否置為空 define max size 100 棧的最大容量 typedef int elemtype typedef struct treenodetree...