北京建设网站网站,下列哪些店铺适合交换友情链接,电商seo优化,营销推广包括几个方面七、树 树是一种非线性的分层的数据结构#xff0c;在现实生活中比较常见的例子比如家谱和公司的组织架构图#xff0c;如下所示#xff1a; 一个树结构存在着一系列的父子结构#xff0c;并且有着一个根节点#xff0c;这种结构本质上表明了一对多的关系。 那#xff0c…七、树 树是一种非线性的分层的数据结构在现实生活中比较常见的例子比如家谱和公司的组织架构图如下所示 一个树结构存在着一系列的父子结构并且有着一个根节点这种结构本质上表明了一对多的关系。 那如同上面这样的结构一个节点可以有多个子节点但最多只能有一个父节点如果每个节点的子节点数都不大于2那么我们可以把这样一棵树叫做二叉树。而如果这棵树的左侧的节点均小于其根节点而右侧的节点都大于根节点那么我们管这样的一棵树叫做搜索二叉树BST。 我们可以用以下js代码构建二叉搜索树 1 function BinarySearchTree() {
2 var Node function(key){
3 this.key key;
4 this.left null;
5 this.right null;
6 };
7 var root null;
8 } 嗯嗯其实就如同下图所示 嗯老惯例还是有一些方法需要介绍下面继续贴一些代码大家看到名字其实就基本知道是干嘛的了。 var insertNode function(node, newNode){if (newNode.key node.key){ if (node.left null){ node.left newNode; } else {insertNode(node.left, newNode);}} else {if (node.right null){ node.right newNode;} else {insertNode(node.right, newNode);}}
}; 嗯上面是插入的方法用到了递归下面说几个遍历的方法。 var inOrderTraverseNode function (node, callback) {if (node ! null) { inOrderTraverseNode(node.left, callback); callback(node.key); inOrderTraverseNode(node.right, callback); }
} 这个是中序遍历其遍历过程大概如下图所示 嗯可以看到这样遍历完了之后是从下到大的可以用于排序。 然后先序遍历 var preOrderTraverseNode function (node, callback) {if (node ! null) {callback(node.key); preOrderTraverseNode(node.left, callback); preOrderTraverseNode(node.right, callback); }
} 恩然后这个就是先序遍历~最后一种就是后序遍历其实就是最后来访问根节点。 var postOrderTraverseNode function (node, callback) {if (node ! null) {postOrderTraverseNode(node.left, callback); //{1}postOrderTraverseNode(node.right, callback); //{2}callback(node.key); //{3}}
}; 转载于:https://www.cnblogs.com/shicongbuct/p/6822158.html