以如下二叉树为例
{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]