樹的遍歷分為先序遍歷,中序遍歷以及後續遍歷。其中分為遞迴形式與非遞迴形式,及層次遍歷。
先序遍歷:
首先訪問根節點,然後訪問左子樹,最後訪問右子樹。
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的節點稱為葉節點 非終端...