javascript算法(二叉树算法)

前景:js多应用于前端页面的一些交互,但是现在也用js实现服务器上的开发,甚至强于java或者是c++,吸取了前面技术的优点。

   另外,js现在也用于移动端的开发,并且能够很好的兼容IOS和Android两种系统,带来了很大的方便,性价比较高。

一、那么为什么学习算法?

   程序=算法+数据结构。好的算法 能够给用户带来一种良好的用户体验。提高产品的性能,带来更高的价值。

二、排序二叉树算法的重要性?

 能够更好的查询,更快更有效。例如:在百度查询能够查询出很多的数据,那么是依靠什么让其中的数据排在第一排,或者第

 一页?就是根据有效的算法以及其占重要性的比例,算出排在第几。

三、二叉树的原理及代码的实现

《javascript算法(二叉树算法)》

从图中可以看出,每个节点可能有父节点,子节点和兄弟节点。其中比较特殊的是根节点(最上面)和叶子节点(最下面)。

特点:左节点<节点<右节点

《javascript算法(二叉树算法)》

代码:

<script type=”text/javascript”>
        function BinaryTree(){
            /*创建节点*/
            var Node=function(){
                this.key=key;
                this.left=null;
                this.right=null;
            }
            /*插入根节点*/
            var root=null;
            this.insert=function(){
                var newNode=new Node(key);
                if (root==null) {
                    root=newNode;
                }else{
                    insertNode(root,newNode);
                }
            }
            /*插入子节点*/
            function insertNode(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 nodes=[8,3,10,1,6,14,4,7,13];
        var binaryTree=new BinaryTree();
        nodes.forEach(function(key){
            binaryTree.insert(key);
        });
    </script>

****************************************************************

四、遍历

在二叉树中有三种遍历节点的方法:中序遍历、前序遍历、后序便利。

中序遍历(升序排列)

原理:1.遍历根节点的左子树

    2.遍历根节点

   3.遍历根节点的右子树

《javascript算法(二叉树算法)》

《javascript算法(二叉树算法)》

《javascript算法(二叉树算法)》

完整代码:

<!DOCTYPE html>
<html>
<head>
    <title>二叉树的练习</title>
</head>
<body>

    <script type=”text/javascript”>
        function BinaryTree(){
            /*创建节点*/
            var Node=function(key){
                this.key=key;
                this.left=null;
                this.right=null;
            };
            var root=null;
            /*插入子节点*/
            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);
                        }
                    }
            }

            /*插入根节点*/
            this.insert=function(key){
                var newNode=new Node(key);
                if (root===null) {
                    root=newNode;
                }else{
                    insertNode(root,newNode);
                }
            };

            /*中序遍历*/
            var inOrderTraverseNode=function(node,callback){
                if (node!==null) {
                    inOrderTraverseNode(node.left,callback);
                    callback(node.key);
                    inOrderTraverseNode(node.right,callback);
                }
            }
            this.inOrderTraverse=function(callback){
                inOrderTraverseNode(root,callback);
            }
        }

        /*创建一棵树*/
        var nodes=[8,3,10,1,6,14,4,7,13];
        var binaryTree=new BinaryTree();
        nodes.forEach(function(key){
            binaryTree.insert(key);
        });
        /*中序遍历*/
        var callback=function(key){
            console.log(key);
        }
        binaryTree.inOrderTraverse(callback);
    </script>
</body>

</html>

============================================

前序遍历

原理:

代码:

=============================================

后序遍历:

原理:

代码:

****************************未更完*********************************

    原文作者:___KAKU
    原文地址: https://blog.csdn.net/lina2017lina/article/details/79288937
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞