二叉树的遍历

妖精的绣舞 提交于 2019-12-05 07:17:18

二叉树的遍历

二叉树的前序,中序,后序,层序遍历

package 剑指offer;import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;/** * @author WangXiaoeZhe * @Date: Created in 2019/11/22 18:11 * @description: */public class Main17 {    public class TreeNode {        int val = 0;        TreeNode left = null;        TreeNode right = null;        public TreeNode(int val) {            this.val = val;        }    }    ArrayList<Integer> resultList = new ArrayList<>();    /**     * 前序遍历:ABDEC     * 1.首先遍历左子树,遍历到叶子结点为止     * @return     * */    public boolean preorderTraverse(TreeNode node) {        //首先从根节点开始遍历        resultList.add(node.val);        if (node.left != null) {            preorderTraverse(node.left);        }        if (node.right != null) {            preorderTraverse(node.right);        }        return true;    }    /**     * 中序遍历:DBEAC     * @return     *     * */    public boolean inorderTarverse(TreeNode node) {        if (node.left != null) {            inorderTarverse(node.left);        }        resultList.add(node.val);        if (node.right != null) {            inorderTarverse(node.right);        }        return true;    }    /**     * 后序遍历:DEBCA     * @return     *     * */    public boolean postorderTarverse(TreeNode node) {        if (node.left != null) {            postorderTarverse(node.left);        }        if (node.right != null) {            postorderTarverse(node.right);        }        resultList.add(node.val);        return true;    }    /**     * 层序遍历     *     * @param root     * @return     */    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {        if (root == null) {            return resultList;        }        Queue<TreeNode> q = new LinkedList<>();        q.add(root);        while (!q.isEmpty()) {            TreeNode nowNode = q.peek();            q.poll();            resultList.add(nowNode.val);            if (nowNode.left != null) {                q.add(nowNode.left);            }            if (nowNode.right != null) {                q.add(nowNode.right);            }        }        return resultList;    }}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!