Easy
Given the root
of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center).
Example 1:
Input: root = [1,2,2,3,4,4,3]
Output: true
Example 2:
Input: root = [1,2,2,null,3,null,3]
Output: false
Constraints:
[1, 1000]
.-100 <= Node.val <= 100
Follow up: Could you solve it both recursively and iteratively?
%% Definition for a binary tree node.
%%
%% -record(tree_node, {val = 0 :: integer(),
%% left = null :: 'null' | #tree_node{},
%% right = null :: 'null' | #tree_node{}}).
-spec is_symmetric(Root :: #tree_node{} | null) -> boolean().
is_symmetric(null) -> true;
is_symmetric(Root) -> is_symmetric(Root#tree_node.left, Root#tree_node.right).
is_symmetric(null, null) -> true;
is_symmetric(null, _) -> false;
is_symmetric(_, null) -> false;
is_symmetric(L, R) ->
is_symmetric(L#tree_node.left, R#tree_node.right)
and (L#tree_node.val == R#tree_node.val)
and is_symmetric(R#tree_node.left, L#tree_node.right).