ghaiklor / type-challenges-solutions

Solutions for the collection of TypeScript type challenges with explanations
https://ghaiklor.github.io/type-challenges-solutions/
Creative Commons Attribution 4.0 International
470 stars 56 forks source link

type-challenges-solutions/en/medium-inordertraversal #233

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

InOrder Traversal

This project is aimed at helping you better understand how the type system works, writing your own utilities, or just having fun with the challenges.

https://ghaiklor.github.io/type-challenges-solutions/en/medium-inordertraversal.html

igalklebanov commented 2 years ago
type InorderTraversal<T extends TreeNode | null,
  L extends TreeNode | null = T extends TreeNode ? T['left'] : null,
  R extends TreeNode | null = T extends TreeNode ? T['right']: null
> = 
  T extends null 
    ? []
    : [...InorderTraversal<L>, ...(T extends TreeNode ? [T['val']] : []), ...InorderTraversal<R>]
JanessaTech commented 1 week ago

My solution:

type InorderTraversal<T extends TreeNode | null> = T extends TreeNode
  ? [...InorderTraversal<T['left']>, T['val'], ...InorderTraversal<T['right']>]
  : []