遞迴先序中序後序非遞迴先序中序後序
除錯二叉樹各種遍歷演算法,第七章,實驗題2
#include #include using namespace std;
/* * 二叉樹的定義和各種運算部分
*/#define maxsize 100
typedef char elemtype;
typedef struct node
btnode;
void createbtree(btnode*& b, char* str) //創造二叉樹}}
j++;
ch = str[j];
}}void destroybtree(btnode*& b) //銷毀二叉樹
}btnode* findnode(btnode* b, elemtype x)
else if(b->data == x)
else
else
}}btnode* lchildnode(btnode* p) //返回左子樹
btnode* rchildnode(btnode* p) //返回右子樹
int btheight(btnode* b) //求二叉樹的高度
}void dispbtree(btnode* b) //輸出二叉樹
}}/*
* 佇列定義和各種演算法部分
*/typedef struct sqqueue;
void initqueue(sqqueue*& q)
void destroyqueue(sqqueue*& q)
bool queueempty(sqqueue* q)
bool enqueue(sqqueue*& q, btnode* e)
q->rear = (q->rear + 1) % maxsize;
q->data[q->rear] = e;
return true;
}bool dequeue(sqqueue*& q, btnode*& e)
q->front = (q->front + 1) % maxsize;
e = q->data[q->front];
return true;}/*
* 棧定義部分
*/typedef struct
sqstack;
void initstack(sqstack*& s)
void destroystack(sqstack*& s)
bool stackempty(sqstack* s)
bool push(sqstack*& s, btnode* e)
s->top++;
s->data[s->top] = e;
return true;
}bool pop(sqstack*& s, btnode*& e)
bool gettop(sqstack* s, btnode*& e)
/* * 2.除錯二叉樹各種遍歷演算法,第七章,實驗題2
*/#include #include using namespace std;
#include "btreeadd.cpp"
/* * 遍歷
*/void preorder(btnode* b) //遞迴先序遍歷
}void preorder1(btnode* b) //非遞迴先序遍歷
if (p->lchild != null)
}cout << endl;
}destroystack(st);
}void inorder(btnode* b) //遞迴中序遍歷
}void inorder1(btnode* b) //非遞迴中序遍歷
if (!stackempty(st))
}cout << endl;
destroystack(st);
}void postorder(btnode* b) //遞迴後序遍歷
}void postorder1(btnode* b) //非遞迴後序遍歷
r = null;
flag = true;
while (!stackempty(st) && flag)
else
}} while (!stackempty(st));
printf("\n");
destroystack(st);}/*
* 層次遍歷
*/void levelorder(btnode* b)
}}int main(void)
二叉樹 各種遍歷演算法
include include include using namespace std 二叉樹結點 typedef struct bitnodebitnode,bitree 按先序序列建立二叉樹 int createbitree bitree t else return 0 輸出 void visi...
二叉樹的各種遍歷演算法
typedef struct treenode int data struct treenode left struct treenode right int flag 該標記用於後序非遞迴遍歷 ptree 先序遞迴遍歷 void bt preorder ptree root if root nul...
二叉樹遍歷的各種演算法
二叉樹的遍歷是指按照一定次序訪問二叉樹中的所有節點,且每個節點僅被訪問一次的過程。是最基本的運算,是其他運算的基礎。二叉樹有兩種儲存結構 順序儲存和鏈式儲存 順序儲存 對完全二叉樹來說,可以充分利用儲存空間,但對於一般的二叉樹,只有少數的儲存單元被利用 cpp view plain copy typ...