用递归方式实现二叉树查找算法

二叉树就是一种数据结构, 它的组织关系就像是自然界中的树一样。官方语言的定义是:是一个有限元素的集合,该集合或者为空、或者由一个称为根的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。

二叉树的存储方式有两种:顺序存储、链式存储.


递归构建二叉树

创建二叉树的节点对象:

var characters = ['A','B','C','D','E','F','G','H','I','G','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
function Node() {
     
    this.text='';
    this.leftChild = null;
    this.rightChild = null;
}
function buildTree(node, i) {
     
    var leftIndex = 2i+1;
    var rightIndex = 2i+2;
    if(leftIndex// 有左子树
        // 创建一个新节点
        let childNode = new Node();
        // 新节点文本
        childNode.text = characters[leftIndex];
        //将新节点赋给左子树
        node.leftChild = childNode;
        // 递归得到左子树
        buildTree(childNode, leftIndex);
    }
    if(rightIndex// 有右子树
        // 创建一个新节点
        let childNode = new Node();
        // 新节点文本
        childNode.text = characters[rightIndex];
        //将新节点赋给右子树
        node.rightChild = childNode;
        // 递归得到右子树
        buildTree(childNode, rightIndex);
    }
}
var node = new Node(); // 实例化根节点
node.text = characters[0]; // 根节点文本
buildTree(node,0);  // 创建二叉树,0表示索引

时间复杂度为? 不知道啊
构建完二叉树的基本结构后,我们开始进入二叉树最基本的遍历
遍历有三种:前序遍历、中序遍历、后序遍历

你可能感兴趣的:(前端学习)