Как повторить структуру treeview в menu?
Рекурсия:private void button1_Click(object sender, EventArgs e)
{
  // создаем меню
  var menu = new MenuStrip();
  menu.Items.Add("Меню");

  // перебираем узлы
  foreach (TreeNode n in treeView1.Nodes)
  {
    // создаем элемент меню
    var menuItem = new ToolStripMenuItem();
    menuItem.Text = n.Text;
    // перебирем детей
    ConvertNodeToMenu(menuItem, n);
    // добавляем элемент в меню
    ((ToolStripMenuItem)menu.Items[0]).DropDownItems.Add(menuItem);
  }
      
  // добавляем меню на форму
  this.Controls.Add(menu);
}

private void ConvertNodeToMenu(ToolStripMenuItem menuParent, TreeNode node)
{
  foreach (TreeNode n in node.Nodes)
  {
    // создаем элемент меню
    var menuItem = new ToolStripMenuItem();
    menuItem.Text = n.Text;
    // перебираем детей
    ConvertNodeToMenu(menuItem, n);
    // добавляем элемент в меню
    menuParent.DropDownItems.Add(menuItem);
  }
}
Вариант с LINQ:private void button1_Click(object sender, EventArgs e)
{
  // создаем меню
  var menu = new MenuStrip();
  menu.Items.Add("Меню");
  // берем первый элемент меню
  var menuItem = (ToolStripMenuItem)menu.Items[0];
  // получаем узлы и добавляем в меню
  menuItem.DropDownItems.AddRange
  (
    treeView1.Nodes.Cast<TreeNode>().Select
    (
      n => new ToolStripMenuItem(n.Text, null, ConvertNodeToMenu(n))
    ).ToArray()
  );
  // добавляем меню на форму
  this.Controls.Add(menu);
}

private ToolStripMenuItem[] ConvertNodeToMenu(TreeNode node)
{
  return node.Nodes.Cast<TreeNode>().Select
  (
    n => new ToolStripMenuItem(n.Text, null, ConvertNodeToMenu(n))
  ).ToArray();
}
советую глянуть здесь. По ссылке и исходник лежит со схожим функционалом.