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;
    }    
}

}

全部评论

相关推荐

01-07 07:54
已编辑
门头沟学院 前端工程师
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务