设计思路
- 使用 TypeScript 泛型来定义树形结构数据类型,这样可以灵活支持不同类型的节点。
- 定义一个泛型接口来表示树节点,包含节点值和子节点数组。
- 编写递归函数来遍历树形结构,收集所有节点的值并返回。
代码示例
// 定义树形结构数据类型
interface TreeNode<T> {
value: T;
children: TreeNode<T>[];
}
// 遍历树的函数
function traverseTree<T>(root: TreeNode<T>): T[] {
const result: T[] = [];
function recursiveTraverse(node: TreeNode<T>) {
result.push(node.value);
node.children.forEach(child => recursiveTraverse(child));
}
recursiveTraverse(root);
return result;
}
// 示例使用
const tree: TreeNode<number> = {
value: 1,
children: [
{
value: 2,
children: [
{ value: 4, children: [] },
{ value: 5, children: [] }
]
},
{
value: 3,
children: [
{ value: 6, children: [] },
{ value: 7, children: [] }
]
}
]
};
const values = traverseTree(tree);
console.log(values); // 输出: [1, 2, 4, 5, 3, 6, 7]