JAVA二叉树的遍历 递归和非递归 (DFS(前、中、后序) BFS)
先建立一个节点类
package mianShi_test.binaryTree;
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x; }
}
建立一个二叉树类BinTree,并写出共计8个遍历方法
package mianShi_test.binaryTree;
import java.util.*;
public class BinTree {
private Integer[] datas;
private TreeNode root;
public TreeNode getRoot() {
return root;
}
public void setRoot(TreeNode root) {
this.root = root;
}
public BinTree(Integer[] datas) {
createBinTree(datas);
}
public void createBinTree(Integer[] datas){
List<TreeNode> nodelist = new ArrayList<>();
for(Integer o : datas){
nodelist.add(new TreeNode(o));
}
root = nodelist.get(0);
for(int i=0;i<nodelist.size()/2;i++){
nodelist.get(i).left = nodelist.get(2*i+1);
if(2*i+2 < nodelist.size()){
nodelist.get(i).right = nodelist.get(2*i+2);
}
}
}
public void preOrderTraverse_recursion(TreeNode root){
if(root != null){
System.out.print(root.val+" ");
preOrderTraverse_recursion(root.left);