JavaScript中二叉树的遍历

122 阅读2分钟

JavaScript中二叉树的遍历

  • 二叉树是一种重要的数据结构,由节点组成,每个节点最多有两个子节点,通常称为左子节点和右子节点,要注意的是空树也可称为二叉树。
  • 二叉树的遍历则是指按照某种特定的顺序访问树中的所有节点。这里我们将讨论三种基本的遍历方式:前序遍历(Pre-order Traversal)、中序遍历(In-order Traversal)和后序遍历(Post-order Traversal)。

定义二叉树节点

首先,在JavaScript中,我们可以通过创建一个简单的对象来定义一个二叉树的节点结构。如下:

function TreeNode(val){
    this.val=val
    this.left =null
    this.right=null
}

前序遍历

前序遍历的顺序是:根节点、左子树、右子树,也就是‘根左右’。这里我们通过递归来实现它,如下:

function  preorder(root){
    if(!root){
        return
    }

    console.log(root.val)//访问根节点 
    preorder(root.left)// 遍历左子树 
    preorder(root.right)// 遍历右子树
   
}
// 示例
const root = new TreeNode(1);  
root.left = new TreeNode(2);  
root.right = new TreeNode(3);  
root.left.left = new TreeNode(4);  
root.left.right = new TreeNode(5); 
root.right.right = new TreeNode(6);
preorder(root);

输出结果为:124536

中序遍历

中序遍历的顺序是:左子树 、 根节点 、 右子树,即‘左根右’,通过递归来实现它如下:

function inorder(root){
    if(!root) return

    inorder(root.left)//遍历左子树
    console.log(root.val)//访问根节点
    inorder(root.right)遍历右子树
    
}
inorder(root)

输出结果为:425136

后序遍历

后序遍历的顺序是:左子树 、 右子树 、 根节点,也就是 ‘左右根,通过递归来实现它如下:

function lastorder(root){
    if(!root) return
    lastorder(root.left)//遍历左子树
    lastorder(root.right)//遍历右子树
    console.log(root.val)//访问根节点
}
lastorder(root)

输出结果为:452631

结尾

通过上面的示例,我们可以看到JavaScript中如何定义二叉树节点、如何进行递归遍历,并提供了相应的输出实例。这些遍历算法在树形数据结构的处理中非常有用,希望对你有所帮助。 最后,感谢阅读,别忘了点赞、收藏和关注哦,三者任选其三即可。