<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
var tree = {
"id": 0,
"name": "root",
"left": {
"id": 1,
"name": "Simon",
"left": {
"id": 3,
"name": "Carl",
"left": {
"id": 7,
"name": "Lee",
"left": {
"id": 11,
"name": "Fate"
}
},
"right": {
"id": 8,
"name": "Annie",
"left": {
"id": 12,
"name": "Saber"
}
}
},
"right": {
"id": 4,
"name": "Tony",
"left": {
"id": 9,
"name": "Candy"
}
}
},
"right": {
"id": 2,
"name": "right",
"left": {
"id": 5,
"name": "Carl",
},
"right": {
"id": 6,
"name": "Carl",
"right": {
"id": 10,
"name": "Kai"
}
}
}
}
// 假设id和name均不会重复,根据输入name找到对应的id
function findIdByName(name, tree) {
if(tree==null){
return;
}
if(tree.name==name){
console.log(tree.id);
return;
}
if(tree.left!=null){
if(tree.left.name==name){
console.log(tree.left.id);
return;
}
}
if(tree.right!=null){
if(tree.right.name==name){
console.log(tree.right.id);
return;
}
}
findIdByName(name, tree.left);
findIdByName(name, tree.right);
}
// window.onload = findIdByName("Kai", tree);
// 假设id和name均不会重复,根据输入id找到对应的name
function findNameById(id, tree) {
//debugger;
if (tree == null) {
return;
}
if (tree.id == id) {
console.log(tree.name);
return;
}
if (tree.left != null) {
if (tree.left.id == id) {
console.log(tree.left.name);
return;
}
}
if (tree.right != null) {
if (tree.right.id == id) {
console.log(tree.right.name);
return;
}
}
findNameById(id, tree.left);
findNameById(id, tree.right);
}
window.onload = findNameById(10, tree);
function getListWithDLR() {
DLR(tree);
}
function DLR(tree) {
if (tree == null) {
return;
}
DLR(tree.left);
console.log(tree.name);
DLR(tree.right);
}
//window.onload = getListWithDLR(); // 把这个对象中所有的名字以“中序遍历”的方式全部输出到console中
function getListWithLDR() {
LDR(tree);
}
function LDR(tree) {
if (tree == null) {
return;
}
console.log(tree.name);
LDR(tree.left);
LDR(tree.right);
}
window.onload = getListWithLDR(); // 把这个对象中所有的名字以“前序遍历”的方式全部输出到console中
function getListWithLRD() {
LRD(tree);
}
function LRD(tree) {
if (tree == null) {
return;
}
LRD(tree.left);
LRD(tree.right);
console.log(tree.name);
}
// window.onload = getListWithLRD();// 把这个对象中所有的名字以“后序遍历”的方式全部输出到console中
</script>
</body>
</html>
递归遍历二叉树,重在理解递归过程,以及"分而治之"的思想。