43 遞迴和非遞迴倆種方法實現二叉樹的三種遍歷

2021-06-25 23:08:51 字數 1068 閱讀 5196

/*

43.遞迴和非遞迴倆種方法實現二叉樹的前序遍歷。

*/#include#include#include#include#includeusing namespace std;

#define max 20

struct btreenode;

//建立二叉樹

btreenode * createtree(int data,int pos,int len)

else

}// 遞迴版本比較簡單

void preorder(btreenode *tree)

}void preordernonrecursive(btreenode *tree)

}void inordernonrecursive(btreenode* tree) //左根右

else

}}void postordernonrecursive(btreenode * tree) //左右根

while(!svisit.empty()) }

int main();

int len=sizeof(data)/sizeof(int);

btreenode *tree=createtree(data,0,len);

printf("前序遍歷(遞迴):\n");//根左右

preorder(tree);printf("\n");

printf("前序遍歷(非遞迴):\n");//根左右

preordernonrecursive(tree);printf("\n");

printf("中序遍歷(非遞迴):\n");//左根右

inordernonrecursive(tree);printf("\n");

printf("後序遍歷(非遞迴):\n");//左右根

二分查詢 非遞迴實現和遞迴實現

二分查詢 演算法思想 又叫折半查詢,要求待查詢的序列有序。每次取中間位置的值與待查關鍵字比較,如果中間位置的值比待查關鍵字大,則在前半部分迴圈這個查詢的過程,如果中間位置的值比待查關鍵字小,則在後半部分迴圈這個查詢的過程。直到查詢到了為止,否則序列中沒有待查的關鍵字。二分查詢的前提是這個陣列是有序的...

二分查詢 非遞迴實現和遞迴實現

二分查詢的條件是對一組有序陣列的查詢,這一點很容易忘記,在使用二分查詢的時候先要對陣列進行排序。先說一下二分查詢的思路 乙個有序陣列,想要查詢乙個數字key的下標,首先算出中間下標mid,利用mid把這個陣列分為兩半,前一半從下標0到mid 1,後一半從mid 1到陣列最後乙個元素 下標是陣列長度減...

二分查詢實現(遞迴和非遞迴)

遞迴的二分查詢,查詢單個值 時間複雜度 log2n 有點像二叉排序樹的查詢 param arr 待查詢陣列,有序 param low param high param findval 待找值 return 待找值的下標,沒有返回 1 public static intbinarysearch int...