系列文章目录
文章目录
前言
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
描述
给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。
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> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
List<Integer> list3 = new ArrayList<>();
//调用函数计算遍历结果
preOrder(root, list1);
inOrder(root, list2);
postOrder(root, list3);
//存放结果集
int[][] res = new int[3][list1.size()];
for(int i = 0; i < list1.size(); i++){
res[0][i] = list1.get(i);
res[1][i] = list2.get(i);
res[2][i] = list3.get(i);
}
//答案返回
return res;
}
// 先序遍历函数
public void preOrder(TreeNode root, List<Integer> list){
//特判
if(root == null){
return;
}
//对左右子树进行递归的遍历
list.add(root.val);
preOrder(root.left, list);
preOrder(root.right, list);
}
// 中序遍历函数
public void inOrder(TreeNode root, List<Integer> list){
//特判
if(root == null){
return;
}
//递归调用:对左右子树进行递归的遍历
inOrder(root.left, list);
list.add(root.val);
inOrder(root.right, list);
}
// 后序遍历函数
public void postOrder(TreeNode root, List<Integer> list){
if(root == null){
return;
}
//递归调用:对左右子树进行递归的遍历
postOrder(root.left, list);
postOrder(root.right, list);
list.add(root.val);
}
}
标签:遍历,TreeNode,int,中序,NC,list,二叉树,root,public
From: https://blog.csdn.net/pleaseprintf/article/details/140896206