演算法 -- 實現二叉樹先序,中序和後序遍歷

車傳新發表於2020-12-06

題目描述

分別按照二叉樹先序,中序和後序列印所有的節點。

示例1

輸入

{1,2,3}

返回值

[[1,2,3],[2,1,3],[2,3,1]]

 

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode類 the root of binary tree
     * @return int整型二維陣列
     */
    public int[][] threeOrders (TreeNode root) {
        List<Integer> fo = new ArrayList<>();
        List<Integer> mo = new ArrayList<>();
        List<Integer> bo = new ArrayList<>();
        firstorder(fo, root);
        midorder(mo, root);
        backorder(bo, root);
        int[][] res = new int[3][fo.size()];
        for(int i = 0; i < fo.size(); i++){
            res[0][i] = fo.get(i);
            res[1][i] = mo.get(i);
            res[2][i] = bo.get(i);
        }
        return res;
    }
    
    public void firstorder(List<Integer> list, TreeNode node){
        if(node == null) {return;}
        list.add(node.val);
        firstorder(list, node.left);
        firstorder(list, node.right);
    }
    
    public void midorder(List<Integer> list, TreeNode node){
        if(node == null) {return;}
        midorder(list, node.left);
        list.add(node.val);
        midorder(list, node.right);
    }
    
    public void backorder(List<Integer> list, TreeNode node){
        if(node == null) {return;}
        backorder(list, node.left);
        backorder(list, node.right);
        list.add(node.val);
    }
}

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

相關文章