二叉树就是一种数据结构, 它的组织关系就像是自然界中的树一样。官方语言的定义是:是一个有限元素的集合,该集合或者为空、或者由一个称为根的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。
二叉树的存储方式有两种:顺序存储、链式存储.
递归构建二叉树
创建二叉树的节点对象:
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<characters.length) {
// 有左子树
// 创建一个新节点
let childNode = new Node();
// 新节点文本
childNode.text = characters[leftIndex];
//将新节点赋给左子树
node.leftChild = childNode;
// 递归得到左子树
buildTree(childNode, leftIndex);
}
if(rightIndex<characters.length) {
// 有右子树
// 创建一个新节点
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表示索引
时间复杂度为? 不知道啊
构建完二叉树的基本结构后,我们开始进入二叉树最基本的遍历
遍历有三种:前序遍历、中序遍历、后序遍历