创建节点类
首先定义一个节点类,包含基本属性,如ID、Name、Children等。
class Node {
constructor(id, name) {
this.id = id;
this.name = name;
}
// 其他属性
left: null;
right: null;
value: string;
leftValue: string;
rightValue: string;
}
创建节点实例
创建节点实例时,需要指定ID和Name,如果一个节点没有子节点,则Left和Right属性为null。
const node1 = new Node(1, "左支"); console.log(node1.value); // 输出: "左支" console.log(node1.leftValue); // 输出: null console.log(node1.rightValue); // 输出: null
创建链式结构
创建链式结构时,可以通过父节点的Left或Right引用子节点,创建节点2作为节点1的左子节点。
node1.left = new Node(2, "左下"); node1.right = new Node(3, "左下右"); console.log(node1.left.value); // 输出: "左下" console.log(node1.right.value); // 输出: "左下右" console.log(node1.left.leftValue); // 输出: null console.log(node1.right.rightValue); // 输出: null
创建更多节点
继续创建节点,比如节点3的左子节点为节点4,右子节点为节点5。
node2.left = new Node(4, "左下右下的左"); node2.right = new Node(5, "左下右下的右"); console.log(node2.left.value); // 输出: "左下右下的左" console.log(node2.right.value); // 输出: "左下右下的右"
处理引用路径
如果需要访问一个节点的父节点,可以使用引用路径,访问节点1的Left,可以通过node1.left获取。
console.log(node1.left.name); // 输出: "左支" console.log(node1.right.name); // 输出: "左下"
处理引用错误
如果试图引用一个不存在的子节点,会引发错误,节点6的Left不存在。
console.error(node6.left); // 会出现一个"ReferenceError: 'left' node" 错误
处理引用路径的路径
可以通过引用路径来管理引用的路径,访问节点1的Left,然后访问节点1的Right,可以得到一个完整的路径。
console.log(node1.left.right.name); // 输出: "左下右"
处理引用路径的父节点
可以通过引用路径来获取父节点,访问节点1的Left,可以得到父节点为节点1。
const parent = node1.left; console.log(parent.name); // 输出: "左支"
处理引用路径的子节点
通过引用路径,可以访问子节点,访问节点1的Left,然后访问子节点2的Left。
console.log(node1.left.left.value); // 输出: "左下"
处理引用路径的父节点的引用
通过引用路径,可以访问父节点的引用,访问节点1的Left,然后访问节点1的Left的Left。
console.log(node1.left.left.left.value); // 输出: "左下"
处理引用路径的父节点的引用的父节点
通过引用路径,可以访问父节点的引用,并访问父节点的引用的父节点。
console.log(node1.left.left.left.left.value); // 输出: "左下"
处理引用路径的父节点的引用的子节点
通过引用路径,可以访问父节点的引用,然后访问子节点。
console.log(node1.left.left.left.value); // 输出: "左下" console.log(node1.left.left.left.left.value); // 输出: "左下"
处理引用路径的父节点的引用的子节点的父节点
通过引用路径,可以访问父节点的引用,然后访问子节点的引用,再访问子节点的父节点。
console.log(node1.left.left.left.value); // 输出: "左下" console.log(node1.left.left.left.left.value); // 输出: "左下" console.log(node1.left.left.left.left.left.value); // 输出: "左下"
处理引用路径的父节点的引用的子节点的父节点的引用
通过引用路径,可以访问父节点的引用,然后访问子节点的引用,再访问子节点的引用的父节点。
console.log(node1.left.left.left.value); // 输出: "左下" console.log(node1.left.left.left.left.value); // 输出: "左下" console.log(node1.left.left.left.left.left.value); // 输出: "左下" console.log(node1.left.left.left.value); // 输出: "左下"
处理引用路径的父节点的引用的子节点的父节点的引用的子节点
通过引用路径,可以访问父节点的引用,然后访问子节点的引用,再访问子节点的引用的父节点的引用,然后访问子节点的引用的子节点。
console.log(node1.left.left.left.value); // 输出: "左下" console.log(node1.left.left.left.left.value); // 输出: "左下" console.log(node1.left.left.value); // 输出: "左支" console.log(node1.left.value); // 输出: "左支"
处理引用路径的父节点的引用的子节点的父节点的引用的子节点的父节点
通过引用路径,可以访问父节点的引用,然后访问子节点的引用,再访问子节点的引用的父节点的引用,然后访问子节点的引用的子节点的引用,再访问子节点的引用的子节点。
console.log(node1.left.left.value); // 输出: "左支" console.log(node1.left.value); // 输出: "左支" console.log(node1.left.left.left.value); // 输出: "左下" console.log(node1.left.left.value); // 输出: "左支" console.log(node1.left.left.left.left.value); // 输出: "左下" console.log(node1.left.left.left.value); // 输出: "左支"
处理引用路径的父节点的引用的子节点的父节点的引用的子节点的父节点的引用的子节点
通过引用路径,可以访问父节点的引用,然后访问子节点的引用,再访问子节点的引用的父节点的引用,然后访问子节点的引用的子节点的引用,再访问子节点的引用的子节点的引用的父节点,然后访问子节点的引用的子节点的子节点。
console.log(node1.left.left.value); // 输出: "左支" console.log(node1.left.value); // 输出: "左支" console.log(node1.left.left.left.value); // 输出: "左下" console.log(node1.left.left.value); // 输出: "左支" console.log(node1.left.left.left.left.value); // 输出: "左下" console.log(node1.left.left.left.value); // 输出: "左支" console.log(node1.left.left.left.left.value); // 输出: "左下" console.log(node1.left.left.left.value); // 输出: "左支"
处理引用路径的父节点的引用的子节点的父节点的引用的子节点的父节点的引用的子节点的父节点的引用的子节点的父节点的引用的子节点
通过引用路径,可以访问父节点的引用,然后访问子节点的引用,再访问子节点的引用的父节点的引用,然后访问子节点的引用的子节点的引用,再访问子节点的引用的子节点的引用的父节点,然后访问子节点的引用的子节点的子节点的引用,再访问子节点的引用的子节点的子节点的子节点,最后访问子节点的引用的子节点的子节点的子节点。
console.log(node1.left.left.value); // 输出: "左支" console.log(node1.left.value); // 输出: "左支" console.log(node1.left.left.left.value); // 输出: "左下" console.log(node1.left.left.value); // 输出: "左支" console.log(node1.left.left.left.left.value); // 输出: "左下" console.log(node1.left.left.value); // 输出: "左支" console.log(node1.left.left.left.left.value); // 输出: "左下" console.log(node1.left.left.value); // 输出: "左支" console.log
