JavaScript二叉树(先序、中序、后序遍历)
以如下二叉树为例
{1,2,3,4,5,6,7,8,9,10,#,#,11,#,#,#,#,12,#,#,13}
先序遍历
遍历的顺序:NLR(根节点->左结点->右结点)
/** * @param root TreeNode类 * @return 一维数组 */ function preorderTraversal(root) { const res = [] preorder(root, res) return res } function preorder(root, res) { if (root == null) { return } // 先序遍历的位置 res.push(root.val) preorder(root.left, res) preorder(root.right, res) }
输出结果:[1,2,4,8,9,12,5,10,13,3,6,11,7]
中序遍历
遍历的顺序:LNR(左节点->根结点->右结点)
/** * @param root TreeNode类 * @return 一维数组 */ function inorderTraversal(root) { const res = [] inOrder(root, res) return res } function inOrder(root, res) { if (root == null) { return } inOrder(root.left, res) // 中序遍历的位置 res.push(root.val) inOrder(root.right, res) }
输出结果:[8,4,12,9,2,10,13,5,1,6,11,3,7]
后序遍历
遍历的顺序:LRN(左结点->右结点->根节点)
/** * @param root TreeNode类 * @return 一维数组 */ function postorderTraversal( root ) { let res = []; postOrder(root, res); return res; } function postOrder(root, res){ if(root == null) return; postOrder(root.left); postOrder(root.right); // 后序遍历的位置 res.push(root.val); }
输出结果:[8,12,9,4,13,10,5,2,11,6,7,3,1]
下一篇:
动态规划(五):多重背包问题