做h5网站,贵阳网站建设价格,玩具网站 下载,全网营销网络推广二叉树的中序遍历
let arr [[[a], b, [c]], d, [[e], f, [g]]]
class Tree {constructor(left,root,right) { // 一棵树具有根节点#xff0c;左孩子节点和右孩子节点this.left left;this.root root;this.right right;}
}
// 将数组构造为树的处理函数
function arrToTre…二叉树的中序遍历
let arr [[[a], b, [c]], d, [[e], f, [g]]]
class Tree {constructor(left,root,right) { // 一棵树具有根节点左孩子节点和右孩子节点this.left left;this.root root;this.right right;}
}
// 将数组构造为树的处理函数
function arrToTree (arr) {if (arr.length 1){ // 只有一个根节点return new Tree(null,arr[0],null)}if (arr.length 2){ // 只有根节点和左孩子节点return new Tree(arrToTree(arr[0]),arr[1],null)}if (arr.length 3) {return new Tree(arrToTree(arr[0]),arr[1],arrToTree(arr[2]))}
}
let tree arrToTree(arr)
/* 对二叉树进行中序遍历处理左根右的方式
函数体内采用递归算法所以左子树和右子树要用yield*遍历
*/
function* middleSort (that) { // that指向的是new Tree()对象if (that) {yield* middleSort(that.left) // 遍历左子树 yield that.rootyield* middleSort(that.right)// 遍历右子树}
}
let result []
for (let node of middleSort(tree)) { result.push(node)
}
console.log(result)参考自ES6Generator