關於二叉樹的先序遍歷呢,我們就以上面的二叉樹爲例進行講述:
先序遍歷呢,就是先遍歷他的頭節點,再遍歷他的左子樹,之後再是右子樹。所以顯示遍歷結點A,之後遍歷他的左子樹B,再通過B,遍歷他的左子樹D,再遍歷D的左子樹此時發現D的左子樹爲空,此時再返回B去遍歷他的右子樹E,再通過E遍歷他的左子樹G,在遍歷G的左子樹,此時G的左子樹爲空,返回E再遍歷E的右子樹,也爲空,此時A的左子樹就遍歷完了,返回到A再遍歷他的右子樹C,再遍歷C的左子樹,發現爲空,則遍歷右子樹F,在遍歷F的左子樹發現也爲空,此時A的右子樹也遍歷完了,這時整個二叉樹就遍歷完了,返回A。
所以先序遍歷的順序是:A,B,D,E,G,C,F
下面使用遞歸來實現先序遍歷:
public static void preOrder(Node root) {
if (root == null) {
return;
}
System.out.print(root.val);
preOrder(root.left);
preOrder(root.right);
}
這是我大概畫的一個遞歸的內部關係,雖然看起來是吧,但是還是闊以的。
它的打印結果就是我們前面推導的那樣。我們看到的代碼雖然只有那幾行,但是內部的關係還是很複雜的,所以希望我畫的圖對大家的理解有幫助!!