/*
* 1.前序遍歷的 遞迴實現和 非遞迴實現
* 2.中序遍歷的 遞迴實現和 非遞迴實現
* 3.後序遍歷的 遞迴實現和 非遞迴實現
* 4.根據兩項遍歷結果 重構樹結構
*/#include
#include
#include
using
namespace
std;
struct btreenode
;//重建二叉樹
btreenode* constructioncore(int *startpre, int *endpre, int *startin, int *endin)
else
}int *rootin = startin;
while(rootin <= endin && *rootin != root->m_nvalue)
++rootin;
if(rootin == endin && *rootin != root->m_nvalue)
int leftlen = rootin - startin;
int *leftpreend = startpre + leftlen;
if(leftlen > 0)
if(leftlen < endpre - startpre)
return root;
}btreenode* construct(int *preorder, int *inorder, int len)
//二叉樹的三種遍歷方式
//前序遍歷遞迴實現
void prebtree(btreenode *phead)
// cout<}
//前序遍歷非遞迴實現
void nrprebtree(btreenode *phead)
else
}cout
void inbtree(btreenode *phead)
}//中序遍歷的非遞迴實現
void nrinbtree(btreenode *phead)
else
}}//後序遍歷的遞迴實現
void postbtree(btreenode *phead)
}//後序遍歷的非遞迴實現
void nrpostbtree(btreenode *phead)
q = null;
flag = 1;
while(!sk.empty() && flag)
else}}
while(!sk.empty());
}int main()
; int in[8] = ;
btreenode *tr = construct(pre, in, 8);
cout
<<"前序遍歷遞迴"
<"前序遍歷非遞迴"
<<"中序遍歷遞迴"
<"中序遍歷非遞迴"
<"後序遍歷遞迴"
<"後序遍歷非遞迴"
0;}
mysql 遍歷二叉樹 資料結構 二叉樹遍歷
這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...
資料結構 遍歷二叉樹
資料結構實驗之二叉樹二 遍歷二叉樹 time limit 1000ms memory limit 65536kb submit statistic problem description 已知二叉樹的乙個按先序遍歷輸入的字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並按中序和後序的方...
資料結構 遍歷二叉樹
二叉樹的遍歷原理 二叉樹的遍歷是指從根節點出發,按照某種次序以此訪問二叉樹所有節點,使得每個節點被訪問一次且僅被訪問一次 二叉樹遍歷方法 1.前序遍歷 規則是若二叉樹為空,則空操作返回,否則先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹 2.中序遍歷 規則是若樹為空,則空操作返回,否則從根節點開...