算法 - 节点 - 树 - TypeScript
在 TypeScript 中实现树的结构一般会用到类(class)的定义,节点(node)作为树的基本单位,树(tree)则由多个节点(node)组成。
具体代码实现如下:
//定义节点类
class TreeNode {
val: number;
left: TreeNode | null;
right: TreeNode | null;
constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
this.val = (val === undefined ? 0 : val);
this.left = (left === undefined ? null : left);
this.right = (right === undefined ? null : right);
}
}
//定义树类
class Tree {
private root: TreeNode | null;
constructor(val: number) {
this.root = new TreeNode(val);
}
public add(val: number) {
const node = this.root;
if (!node) return null;
const searchTree = function(node: TreeNode) {
if (val < node.val) {
if (!node.left) {
node.left = new TreeNode(val);
return;
} else {
return searchTree(node.left);
}
} else if (val > node.val) {
if (!node.right) {
node.right = new TreeNode(val);
return;
} else {
return searchTree(node.right);
}
} else {
return null;
}
}
return searchTree(node);
}
}
//使用示例
const myTree = new Tree(5);
myTree.add(3);
myTree.add(2);
myTree.add(4);
myTree.add(7);
myTree.add(6);
myTree.add(8);
console.log(myTree);
以上代码定义了节点类、树类,并实现了两个方法:构造方法和添加节点方法。
在使用示例中,先创建树类的实例 myTree,然后逐个添加节点,最后打印整个树的结构。该示例是一个二叉搜索树,可以根据需要改写为多叉树的实现。