题解 | #实现二叉树先序,中序和后序遍历#

实现二叉树先序,中序和后序遍历

https://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 the root of binary tree
     * @return int整型二维数组
     */
    public int[][] threeOrders (TreeNode root) {
        // write code here
        //三种储存方式列表
        List<Integer> frontList = new ArrayList<Integer>();
        List<Integer> centreList = new ArrayList<Integer>();
        List<Integer> rearList = new ArrayList<Integer>();
        //前序方式遍历:先根后左最右
        frontTraversal(root,frontList);
        //中序方式遍历:先左后根最右
        centreLTraversal(root,centreList);
        //后序方式遍历:先左后右最根
        rearTraversal(root,rearList);

        //储存结果集到二维数组中
        int [][] roots = new int[3][frontList.size()];
        for(int i = 0; i < frontList.size(); i++){
            roots[0][i] = frontList.get(i);
            roots[1][i] = centreList.get(i);
            roots[2][i] = rearList.get(i);
        }
        return roots;
    }
    private void frontTraversal(TreeNode root,List<Integer> list){
        if(root == null){
            return;
        }
        list.add(root.val);
        frontTraversal(root.left,list);
        frontTraversal(root.right,list);
    }
    private void centreLTraversal(TreeNode root,List<Integer> list){
        if(root == null){
            return;
        }
        centreLTraversal(root.left,list);
        list.add(root.val);
        centreLTraversal(root.right,list);
    }
    private void rearTraversal(TreeNode root,List<Integer> list){
        if(root == null){
            return;
        }
        rearTraversal(root.left,list);
        rearTraversal(root.right,list);
        list.add(root.val);
    }
}

全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务