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) {
// write code here
List<Integer> preList = new ArrayList<>();
preList = preOrder(root);
List<Integer> inList = new ArrayList<>();
inList = inOrder(root);
List<Integer> postList = new ArrayList<>();
postList = postOrder(root);
int[][] res = new int[3][preList.size()];
for(int i =0;i<preList.size();i++){
res[0][i] = preList.get(i);
res[1][i] = inList.get(i);
res[2][i] = postList.get(i);
}
return res;
}
public void preOrderD(TreeNode root,ArrayList<Integer> list){
if(root==null)
return;
list.add(root.val);
preOrderD(root.left,list);
preOrderD(root.right,list);
}
public void inOrderD(TreeNode root,ArrayList<Integer> list){
if(root==null)
return;
inOrderD(root.left,list);
list.add(root.val);
inOrderD(root.right,list);
}
public void postOrderD(TreeNode root,ArrayList<Integer> list){
if(root==null)
return;
postOrderD(root.left,list);
postOrderD(root.right,list);
list.add(root.val);
}
public List<Integer> preOrder(TreeNode root){
if(root==null)
return null;
ArrayList<Integer> res = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while(!stack.isEmpty()){
TreeNode node = stack.pop();
res.add(node.val);
if(node.right!=null){
stack.push(node.right);
}
if(node.left!=null){
stack.push(node.left);
}
}
return res;
}
public List<Integer> postOrder(TreeNode root){
if(root==null)
return null;
ArrayList<Integer> res = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while(!stack.isEmpty()){
TreeNode node = stack.pop();
res.add(node.val);
if(node.left!=null){
stack.push(node.left);
}
if(node.right!=null){
stack.push(node.right);
}
}
Collections.reverse(res);
return res;
}
public List<Integer> inOrder(TreeNode root){
if(root==null)
return null;
List<Integer> res = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
TreeNode cur = root;
while(cur!=null||!stack.isEmpty()){
while(cur!=null){
stack.push(cur);
cur = cur.left;
}
cur = stack.pop();
res.add(cur.val);
cur = cur.right;
}
return res;
}
}
NC45 实现二叉树先序,中序和后序遍历
最新推荐文章于 2023-04-20 22:38:07 发布