在TypeScript中创建递归二叉树可以通过定义一个二叉树节点类和一个递归函数来实现。下面是一个示例代码:
class TreeNode {
value: any;
left: TreeNode | null;
right: TreeNode | null;
constructor(value: any) {
this.value = value;
this.left = null;
this.right = null;
}
}
function createBinaryTree(arr: any[]): TreeNode | null {
if (arr.length === 0) {
return null;
}
const rootValue = arr.shift();
const rootNode = new TreeNode(rootValue);
const leftArr: any[] = [];
const rightArr: any[] = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < rootValue) {
leftArr.push(arr[i]);
} else {
rightArr.push(arr[i]);
}
}
rootNode.left = createBinaryTree(leftArr);
rootNode.right = createBinaryTree(rightArr);
return rootNode;
}
上述代码中,我们定义了一个TreeNode
类来表示二叉树的节点,包含一个值属性value
,以及左右子节点属性left
和right
。然后,我们定义了一个递归函数createBinaryTree
来创建递归二叉树。该函数接受一个数组参数arr
,表示二叉树的节点值序列。
在函数内部,我们首先判断数组是否为空,如果为空则返回null
,表示当前节点为空。然后,我们从数组中取出第一个值作为根节点的值,并创建一个根节点对象。接着,我们使用两个空数组leftArr
和rightArr
来分别存储比根节点值小和大的值。
然后,我们遍历剩余的数组元素,将比根节点值小的元素放入leftArr
,比根节点值大的元素放入rightArr
。然后,我们递归调用createBinaryTree
函数来创建左子树和右子树,并将返回的节点对象分别赋值给根节点的left
和right
属性。
最后,我们返回根节点对象,完成递归二叉树的创建。
使用示例:
const arr = [4, 2, 6, 1, 3, 5, 7];
const root = createBinaryTree(arr);
console.log(root);
上述示例代码中,我们定义了一个数组arr
来表示二叉树的节点值序列,然后调用createBinaryTree
函数来创建递归二叉树,并将返回的根节点对象赋值给root
变量。最后,我们打印root
变量,可以看到创建的递归二叉树的结构。
这是一个简单的在TypeScript中创建递归二叉树的示例,希望对你有帮助。
领取专属 10元无门槛券
手把手带您无忧上云