Macro leetcode_trees_rs::right_tree

source ·
macro_rules! right_tree {
    ($val:expr) => { ... };
    ($val:expr, $right:tt) => { ... };
}
Expand description

§Description

A macro to reduce the boilerplate in generating right-sided only binary trees.

§Match arms

Arm 1:

  • Takes the value as an argument.
  • Equivalent of doing TreeNode::new(). Arm 2:
  • Takes the value as an argument.
  • Also takes a sequence of right only node values as an argument (and builds the TreeNode struct with them).

§Example

This code:

use crate::utils::right_tree;

let right_only_tree = right_tree!(1, 2, 3);

Is equivalent to this:

use std::{rc::Rc, cell::RefCell};
use crate::utils::TreeNode;

let right_only_tree = TreeNode {
    val: 1,
    left: None,
    right: Some(Rc::new(RefCell::new(TreeNode {
        val: 2,
        left: None,
        right: Some(Rc::new(RefCell::new(TreeNode {
            val: 3,
            left: None,
            right: None,
        })))
    })))
};