資料結構 二叉樹的遍歷

2021-07-16 21:29:04 字數 1523 閱讀 4721

/*

* 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.中序遍歷 規則是若樹為空,則空操作返回,否則從根節點開...