JavaScript二叉树遍历详解

二叉树概述

二叉树(Binary tree)是每个节点最多存在左右两个分支的树形数据结构。通常分支被称作“左子树”或“右子树”,节点有根节点和子节点。二叉树的分支顺序不能随意颠倒。

JavaScript二叉树遍历详解

二叉树遍历有以下几种方式:

1、深度遍历,包括:

  • 先序优先(DLR):根结点 > 左子树 > 右子树
JavaScript二叉树遍历详解

  • 中序优先(LDR):左子树 > 根结点 > 右子树
JavaScript二叉树遍历详解

  • 后序优先(LRD):左子树 > 右子树 > 根结点
JavaScript二叉树遍历详解

2、广度遍历(层级遍历)

JavaScript二叉树遍历详解

树结构代码构建

JavaScript二叉树遍历详解

深度遍历实现

  • 先序优先遍历DLR。
JavaScript二叉树遍历详解

  • 中序优先遍历LDR。
JavaScript二叉树遍历详解

  • 后序优先遍历LRD。
JavaScript二叉树遍历详解

广度优先(层级遍历),构造栈来打印。

JavaScript二叉树遍历详解

深度遍历(先序优先非递归版)。

JavaScript二叉树遍历详解

深度遍历(后序优先非递归版)。

JavaScript二叉树遍历详解

总结

二叉树遍历非常有用,理解起来其实非常简单。主要利用的是递归调用和栈(或队列)来完成遍历。


分享到:


相關文章: