/*
 * function TreeNode(x) {
 *   this.val = x;
 *   this.left = null;
 *   this.right = null;
 * }
 */
let preOrderArr = []    // 先
let inOrderArr = []     // 中
let postOrderArr = []   // 后

// 先序
function preOrder (node) {
  if (node !== null) {
    preOrderArr.push(node.val)
    preOrder(node.left)
    preOrder(node.right)
  }
}

// 中序
function inOrder (node) {
  if (node !== null) {
    inOrder(node.left)
    inOrderArr.push(node.val)
    inOrder(node.right)
  }
}

// 后序
function postOrder (node) {
  if (node !== null) {
    postOrder(node.left)
    postOrder(node.right)
    postOrderArr.push(node.val)
  }
}

/**
 * 
 * @param root TreeNode类 the root of binary tree
 * @return int整型二维数组
 */
function threeOrders( root ) {
  preOrder(root)
  inOrder(root)
  postOrder(root)
  
  return [preOrderArr, inOrderArr, postOrderArr]
}
module.exports = {
    threeOrders : threeOrders
};