樹的遍歷(先中後序,非遞迴,層次遍歷)

2021-08-07 08:07:53 字數 588 閱讀 2515

樹的遍歷分為先序遍歷,中序遍歷以及後續遍歷。其中分為遞迴形式與非遞迴形式,及層次遍歷。

先序遍歷:

首先訪問根節點,然後訪問左子樹,最後訪問右子樹。

void preorder(bitree t)

}

中序遍歷:

首先訪問左子樹,然後訪問根節點,最後訪問右子樹。

void inorder(bitree t)

}

後序遍歷:

首先訪問左子樹,然後訪問右子樹,最後訪問根節點。

void inorder(bitree t)

}

以上三種都是遞迴形式,下面說一下非遞迴形式的中序遍歷。這裡採用了棧:

void inorder2(bitree t)

else

}}

層次遍歷:

就是將節點一層一層的輸出,這裡利用了佇列:

void levelorder(bitree t)

}

樹的非遞迴後序遍歷

樹的後序遍歷特點 左 右 根 思路1 先序特點 逆序輸出 先序遍歷特點 根 左 右 在先序非遞迴遍歷 的基礎上可以實現 根 右 左 如果逆序輸出,就是 左 根 右 於是我們需要乙個另外的棧用來逆序輸出。template class t void binarytree postorder 後序遍歷 s...

樹的遍歷,前中後 層次遍歷非遞迴

存在記憶體洩漏,原因是沒有銷毀結點時記憶體釋放的處理.include include include include using namespace std class cbtnode typedef cbtnode btnode class cbtroot void xianxubianli1 遞...

樹的遍歷 先序遍歷 中序遍歷 後序遍歷

名詞解釋 1 每個元素稱為節點 2 有乙個特定的節點被稱為根節點或樹根 3 除根節點外的其餘資料元素被分為m個互不相交的集合t1,t2,t3.tm 1,其中每乙個集合ti本身也是乙個樹,被稱作原樹的子樹 節點的度 乙個節點含有子樹的個數稱為該節點的度 葉節點或終端節點 度為0的節點稱為葉節點 非終端...