java分别按照二叉树先序,中序和后序打印所有的节点。
实现二叉树先序,中序和后序遍历
http://www.nowcoder.com/questionTerminal/a9fec6c46a684ad5a3abd4e365a9d362
//用递归,先计算树的结点数,然后在用递归来分别遍历,存到数组中就好了
import java.util.*;
/*
- public class TreeNode {
- int val = 0;
- TreeNode left = null;
- TreeNode right = null;
- }
- /
public class Solution {
int n;
int[][] order;//restore the 3 kinds of order;
/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型二维数组
*/
public int[][] threeOrders (TreeNode root) {
// write code here
n = countTree(root);
order=new int[3][n];
preOrder(root);
midOrder(root);
lastOrder(root);
return order;
}
//count The tree node_number public int countTree(TreeNode root){ if(root==null){ return n; }else{ n++; countTree(root.left); countTree(root.right); } return n; } int pre1 = -1; //pre_order public void preOrder(TreeNode root){ if(root==null){ return; }else{ order[0][++pre1]=root.val; preOrder(root.left); preOrder(root.right); } } int mid1 = -1; //pre_order public void midOrder(TreeNode root){ if(root==null){ return; }else{ midOrder(root.left); order[1][++mid1]=root.val; midOrder(root.right); } } int last1 = -1; //pre_order public void lastOrder(TreeNode root){ if(root==null){ return; }else{ lastOrder(root.left); lastOrder(root.right); order[2][++last1]=root.val; } }
}