用遞迴和非遞迴實現二叉樹的前序遍歷、中序遍歷和後序遍歷並列印出相應結果。
private
class treenode
}
在遞迴呼叫時候系統自動給我們建立棧來儲存資料,而使用非遞迴時候需要我們自己實現棧來儲存資料。
遞迴實現前序遍歷
public
void
preorder(treenode root)
system.out.print(root.val+" ");
preorder(root.left);
preorder(root.right);
}
非遞迴實現前序遍歷
對任一節點p
public
void preorder(treenode root)
if (!
stack
.isempty())
}}
遞迴實現中序遍歷public
void
inorder(treenode root)
inorder(root.left);
system.out.print(root.val + " ");
inorder(root.right);
}
非遞迴實現中序遍歷
對於任一節點p
public
void inorder(treenode root)
if (!
stack
.isempty())
}}
遞迴實現後序遍歷public
void
postorder(treenode root)
postorder(root.left);
postorder(root.right);
system.out.print(root.val+" ");
}
非遞迴實現後序遍歷public
void postorder(treenode root)else
if (cur.left !=
null)}}
}
二叉樹的遞迴遍歷和非遞迴遍歷
二叉樹是一種基本的資料結構,在程式設計師面試中經常會被考察。其中按一定順序遍歷所有節點是最基本的操作,很多知名的面試題目,例如求二叉樹的深度 求出和為某一值的路徑等等,本質上都是遍歷的變種。本文試圖從遞迴和非遞迴的角度來考察一下遍歷的演算法。遍歷定義 在二叉樹中,每乙個節點都有左右兩個子節點 子節點...
二叉樹的非遞迴遍歷和遞迴遍歷
前言 二叉樹的遍歷有前序遍歷 中序遍歷 後續遍歷 層序遍歷。然後我們分別實現一下各種遍歷的遞迴與非遞迴的方式,樹節點定義如下 class treenode 前序遍歷 前序遍歷是指我們的二叉樹先遍歷root節點,然後遍歷左節點,最後是右節點 遞迴public void preorder treenod...
二叉樹遍歷(遞迴和非遞迴)
二叉樹的中序遍歷 二叉樹的後序遍歷 測試二叉樹的節點定義如下 節點 二叉樹的前序遍歷順序為 根左右。如下圖所示,前序遍歷順序為 1245367。遞迴 public static void preorder treenode root system.out.print root.val preorde...