Typescript類型體操 - InorderTraversal

題目

中文

實現二叉樹的中序遍歷

示例:

const tree1 = {
    val: 1,
    left: null,
    right: {
        val: 2,
        left: {
            val: 3,
            left: null,
            right: null,
        },
        right: null,
    },
} as const;
type A = InorderTraversal<typeof tree1>; // [1, 3, 2]

English

Implement the type version of binary tree inorder traversal.

For example:

const tree1 = {
    val: 1,
    left: null,
    right: {
        val: 2,
        left: {
            val: 3,
            left: null,
            right: null,
        },
        right: null,
    },
} as const;
type A = InorderTraversal<typeof tree1>; // [1, 3, 2]

答案

interface TreeNode {
    val: number;
    left: TreeNode | null;
    right: TreeNode | null;
}
type InorderTraversal<T extends TreeNode | null> = T extends TreeNode
    ? [
          ...(T['left'] extends TreeNode ? InorderTraversal<T['left']> : []),
          T['val'],
          ...(T['right'] extends TreeNode ? InorderTraversal<T['right']> : [])
      ]
    : [];

在線演示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章