二叉树的遍历

被刻印的时光 ゝ 提交于 2019-11-28 01:35:34
import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.Stack;/** * Created by zhouguojing on 2019/8/20. */public class TreeNode {    int val;    TreeNode left;    TreeNode right;    public TreeNode(int val) {        this.val = val;    }//先序遍历    public static ArrayList<Integer> preOrder(TreeNode root)    {        ArrayList<Integer> list = new ArrayList<Integer>();        if(root == null) return null;        list.add(root.val);        if(root.left!=null) list.addAll(preOrder(root.left));        if(root.right!=null) list.addAll(preOrder(root.right));        return list;    } //中序遍历 public static ArrayList<Integer> inOrder(TreeNode root) {     ArrayList<Integer> list = new ArrayList<Integer>();     if(root == null) return null;     if(root.left!=null) list.addAll(inOrder(root.left));     list.add(root.val);     if(root.right!=null) list.addAll(inOrder(root.right));     return list; } //后序遍历 public static ArrayList<Integer> postOrder(TreeNode root) {     ArrayList<Integer> list = new ArrayList<Integer>();     if(root == null) return null;     if(root.left!=null) list.addAll(postOrder(root.left));     if(root.right!=null) list.addAll(postOrder(root.right));     list.add(root.val);     return list; }//广度优先遍历    public static ArrayList<Integer> levelTraverse(TreeNode root) {        if (root == null) {            return null;        }        ArrayList<Integer> list = new ArrayList<Integer>();        LinkedList<TreeNode> queue = new LinkedList<TreeNode>();        queue.offer(root);        while (!queue.isEmpty()) {            TreeNode node = queue.poll();            list.add(node.val);            if (node.left != null) {                queue.offer(node.left);            }            if (node.right != null) {                queue.offer(node.right);            }        }        return list;    }    //深度优先遍历    public static ArrayList<Integer> DFSTraverse(TreeNode root) {        if (root == null) {            return null;        }        ArrayList<Integer> list = new ArrayList<Integer>();        Stack<TreeNode> stack= new Stack<TreeNode>();        stack.push(root);        while (!stack.isEmpty()) {            TreeNode node = stack.pop();            list.add(node.val);            if (node.right != null) {                stack.push(node.right);            }            if (node.left != null) {                stack.push(node.left);            }        }        return list;    }    public static void main(String[] args)    {        TreeNode one = new TreeNode(1);        TreeNode two = new TreeNode(2);        TreeNode three = new TreeNode(3);        TreeNode four = new TreeNode(4);        TreeNode five = new TreeNode(5);        one.left = three;        one.right = five;        five.left = two;        five.right = four;     //  ArrayList<Integer> list = TreeNode.levelTraverse(one);     //   ArrayList<Integer> list = TreeNode.preOrder(one);     //   ArrayList<Integer> list = TreeNode.inOrder(one);     //   ArrayList<Integer> list = TreeNode.postOrder(one);        ArrayList<Integer> list = TreeNode.DFSTraverse(one);        Iterator<Integer> it = list.iterator();        while(it.hasNext())        {            System.out.print(it.next());        }    }}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!