题解 | #实现二叉树先序,中序和后序遍历#
实现二叉树先序,中序和后序遍历
http://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362
import java.util.;
// 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 static class ID{
public int num;
public ID(int i){
num = i;
}
public int add(){
this.num += 1;
return this.num;
}
}
public static int[][] threeOrders (TreeNode root) {
// write code here
// 分别按照二叉树先序,中序和后序打印所有的节点。
int length = 0;
length = num(root);
int[][] arr = new int[3][length];
preOrder(root, arr, new ID(0));
midOrder(root, arr, new ID(0));
postOrder(root, arr, new ID(0));
return arr;
}
public static int num(TreeNode root){
if(root == null){
return 0;
}
else{
int a = num(root.left);
int b = num(root.right);
return 1+a+b;
}
}
public static void preOrder(TreeNode root, int[][] arr, ID i){
if(root == null){
return;
}
arr[0][i.add() - 1] = root.val;
preOrder(root.left, arr, i);
preOrder(root.right, arr, i);
}
public static void midOrder(TreeNode root, int[][] arr, ID i){
if(root == null){
return;
}
midOrder(root.left, arr, i);
arr[1][i.add() - 1] = root.val;
midOrder(root.right, arr, i);
}
public static void postOrder(TreeNode root, int[][] arr, ID i){
if(root == null){
return;
}
postOrder(root.left, arr, i);
postOrder(root.right, arr, i);
arr[2][i.add() - 1] = root.val;
}}
查看11道真题和解析