[Typescript] 59. Medium - InorderTraversal
typescript Medium 59
2023-09-14 09:00:44 时间
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]
/* _____________ Your Code Here _____________ */
interface TreeNode {
val: number
left: TreeNode | null
right: TreeNode | null
}
type InorderTraversal<T extends TreeNode | null, Orders extends (string | number)[] = []> = [T] extends [TreeNode]
? [...InorderTraversal<T['left']>, T['val'], ...InorderTraversal<T['right']>]
: [];
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'
const tree1 = {
val: 1,
left: null,
right: {
val: 2,
left: {
val: 3,
left: null,
right: null,
},
right: null,
},
} as const
const tree2 = {
val: 1,
left: null,
right: null,
} as const
const tree3 = {
val: 1,
left: {
val: 2,
left: null,
right: null,
},
right: null,
} as const
const tree4 = {
val: 1,
left: null,
right: {
val: 2,
left: null,
right: null,
},
} as const
type cases = [
Expect<Equal<InorderTraversal<null>, []>>,
Expect<Equal<InorderTraversal<typeof tree1>, [1, 3, 2]>>,
Expect<Equal<InorderTraversal<typeof tree2>, [1]>>,
Expect<Equal<InorderTraversal<typeof tree3>, [2, 1]>>,
Expect<Equal<InorderTraversal<typeof tree4>, [1, 2]>>,
]
相关文章
- [Typescript] 125. Extreme - Object Key Paths
- [Typescript] The naked type
- [Typescript] 85. Medium - IsInteger
- [Typescript] 83. Medium - Subsequence
- [Typescript] 41. Medium - IsUnion
- [Typescript] 40. Medium - IsNever
- [Typescript challenge] 20. Medium - Chainable Options
- [Typescript] 18. Medium - Deep Readonly
- [Typescript] 17. Medium - Readonly 2
- [Typescript] 22. Medium - Pop
- [Typescript] 13. Easy - Unshift
- [Typescript] Generics constraint
- [Typescript] Create a Type-Safe Request Handler with Zod and Express
- [Typescript] Constraining Types for Anything but null or undefined (T extends {})
- [Typescript] 107. Medium - FindIndex
- [Typescript] 78. Medium - Unqiue
- [Typescript] 72. Medium - IndexOf
- [Typescript] 71. Medium - Trunc
- [Typescript] 68. Medium - Fill
- [Typescript] 39. Medium - AnyOf
- [Typescript Challenges] 16. Medium - Omit
- [TypeScript] Create a fluent API using TypeScript classes
- Vite+React+TypeScript手撸TodoList
- TypeScript 里 class 和 method 的 abstract 修饰符
- 为什么你应该选择TypeScript而不是JavaScript