java二叉樹遍歷算法 編寫一個程序,實現二叉樹的先序遍歷,中序遍歷,后序遍歷的各種遞歸和非遞歸算法,以及層次遍歷的算法?
編寫一個程序,實現二叉樹的先序遍歷,中序遍歷,后序遍歷的各種遞歸和非遞歸算法,以及層次遍歷的算法?二叉樹可以通過后序和中序遍歷進行恢復,以方便其他樹的操作。在這里,我們先恢復二叉樹,然后進行預序遍歷,
編寫一個程序,實現二叉樹的先序遍歷,中序遍歷,后序遍歷的各種遞歸和非遞歸算法,以及層次遍歷的算法?
二叉樹可以通過后序和中序遍歷進行恢復,以方便其他樹的操作。在這里,我們先恢復二叉樹,然后進行預序遍歷,得到預序遍歷的結果。我們同意恢復樹的函數稱為restoretree()。恢復左右子樹時,需要計算它們的位置,即H1、H2和Z1、Z2的值需要重新計算,并在更新后傳遞給restoretree()函數。以左子樹的構造為例,左子樹的第一個元素下標為Z1,最后一個元素下標為I-1,H1的對應值為H1,H2的值為H1(I-Z1-1),即H1的當前位置向前移動I-Z1-1長度。R代碼實現以實現前面提到的字母序列為例,因為當代碼恢復樹時,它首先恢復根節點,然后訪問樹的左、右子樹,所以恢復過程也相當于根優先遍歷過程。如果只想先遍歷找到根,就不能構建樹。我們可以刪除根優先遍歷函數并簡化其他一些語句,這兩段代碼的結果是相同的。以下是示例輸入和輸出。這里的代碼擴展添加了一段代碼,它使用前序遍歷和中序遍歷來恢復二叉樹并進行后序遍歷。R代碼可以像以前一樣簡化。簡化后,無需建樹即可遍歷。數據結構中二叉樹的定義是遞歸的,自然易懂。
二叉樹的層次遍歷不是遞歸的,而是使用隊列。數據結構中二叉樹的定義如下(不同于圖論中樹的定義):1。這是一個空集。2它由根節點及其左右子樹組成,左右子樹滿足二叉樹的定義。