JS中的二叉树遍历

JavaScript04

JS中的二叉树遍历,第1张

栈、队列、链表等数据结构,都是顺序数据结构。而树是非顺序数据结构。树型结构是一类非常重要的非线性结构。直观地,树型结构是以分支关系定义的层次结构。

二叉树(Binary Tree)是另一种树型结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分(其次序不能任意颠倒。)

遍历二叉树(Traversing Binary Tree):是指按指定的规律对二叉树中的每个结点访问一次且仅访问一次。

二叉树有深度遍历和广度遍历, 深度遍历有前序、 中序和后序三种遍历方法。二叉树的前序遍历可以用来显示目录结构等;中序遍历可以实现表达式树,在编译器底层很有用;后序遍历可以用来实现计算目录内的文件及其信息等。

上述二叉树(a+b*c)-d/e在js中可以用对象的形式表示出来:

先递归遍历左子树,从最左的一个左子树存入数组;然后回溯遍历双亲结点,再是右子树,这样递归循环。

将当前结点压入栈,然后将左子树当做当前结点,如果当前结点为空,将双亲结点取出来,将值保存进数组,然后将右子树当做当前结点,进行循环。

先走左子树,当左子树没有孩子结点时,将此结点的值放入数组中,然后回溯遍历双亲结点的右结点,递归遍历。

广度优先遍历二叉树(层序遍历)是用队列来实现的,广度遍历是从二叉树的根结点开始,自上而下逐层遍历;在同一层中,按照从左到右的顺序对结点逐一访问。

js 中二叉树的深度遍历与广度遍历(递归实现与非递归实现)

二叉树与JavaScript

大概思路讲解:首先拿到test里所有的文件夹与文件,然后遍历文件夹,再拿到子文件夹里的所有文件夹与文件,如果有子子文件夹,在拿到这个子子文件夹里的所有文件夹与文件,遍历。这样一想,就非常像递归,就用递归好了。

后台Node.js这个文件tree接口就写完了,然后用Postman测一下

顺利拿到JSON格式的数据,接口over

然后是前端页面的获取,以及填充

先序,后序,中序针对二叉树。

深度、广度针对普通树。深度遍历:从树根开始扫描,顶层扫描完了,从一层最左(也可以右)面的结点往下层扫描,直到下层已无结点,这时所有靠最左(右)的结点全部扫描完毕,从树梢往上退一层,看这层旁有无兄弟结点,有的话还是一样从最左(右)边开始扫描,这是个递归概念,利用这一方法来遍历整棵树。广度遍历:从树根开始扫描,顶层扫描完了,扫描一层的所有结点,扫描二层的所有结点,,扫描最底层的结点。