二叉樹非遞迴遍歷方法總結

2021-07-22 06:27:28 字數 633 閱讀 9435

以前只會二叉樹的一種非遞迴遍歷,最近又看了二叉樹的多種非遞迴遍歷方式,感覺很有用,親自實現用理解了一番,總結如下。

一、常用方式

1、先序遍歷

1.1 自己常用的一種方式:

public listpreorder1(treenode root) 

} return list;

}

1.2 一些教材上的方式:

public listpreorder2(treenode root)  else 

} return list;

}

2、中序遍歷

public listinorder1(treenode root)  else 

} return list;

}

3、後序遍歷

public listpostorder(node root)  else if(node.right != null && node.right != pre)  else  			}}

return res;

}

非遞迴方法遍歷二叉樹

思路 前序遍歷由圖示是先一里路向左全遞迴壓棧並且邊壓棧邊列印,直到左指標為空,然後得到棧頂指標,並出棧,找該棧頂結點的右結點,如果不為空,同樣的一路左遞迴壓棧,邊壓棧邊列印,直到左指標為空,然後重複,最後棧為空停止。借用棧實現回到前乙個結點 非遞迴遍歷 void btreeprevordernonr...

二叉樹遍歷(遞迴 非遞迴)

二叉樹以及對二叉樹的三種遍歷 先根,中根,後根 的遞迴遍歷演算法實現,以及先根遍歷的非遞迴實現。node public class node public node left public node right public object value 遍歷訪問操作介面 public inte ce ...

二叉樹非遞迴遍歷

二叉樹非遞迴遍歷的幾個要點 1 不管前序 中序還是後序,它們的遍歷路線 或者說是回溯路線,先沿左邊一直走到盡頭,然後回溯到某節點,並跳轉到該節點的右孩子 如果有的話 然後又沿著這個有孩子的左邊一直走到盡頭 都是一樣的。2 明確每次回溯的目的。比如,前序回溯的目的是為了訪問右子樹 中序回溯的目的是為了...