Easy
Given the root
of a binary tree, return the inorder traversal of its nodes’ values.
Example 1:
Input: root = [1,null,2,3]
Output: [1,3,2]
Example 2:
Input: root = []
Output: []
Example 3:
Input: root = [1]
Output: [1]
Example 4:
Input: root = [1,2]
Output: [2,1]
Example 5:
Input: root = [1,null,2]
Output: [1,2]
Constraints:
[0, 100]
.-100 <= Node.val <= 100
Follow up: Recursive solution is trivial, could you do it iteratively?
require_relative '../../com_github_leetcode/tree_node'
# Definition for a binary tree node.
# class TreeNode
# attr_accessor :val, :left, :right
# def initialize(val = 0, left = nil, right = nil)
# @val = val
# @left = left
# @right = right
# end
# end
# @param {TreeNode} root
# @return {Integer[]}
def inorder_traversal(root)
# puts "node = #{root&.val}"
return [] if root.nil?
nodes_visited = []
unless root.left.nil?
left_nodes = inorder_traversal(root.left)
nodes_visited.concat(left_nodes)
end
nodes_visited << root.val
unless root.right.nil?
right_nodes = inorder_traversal(root.right)
nodes_visited.concat(right_nodes)
end
nodes_visited
end