using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tree
internal class TreeNode
public int Value { get; set; }
public List<TreeNode> Children { get; set; }
public TreeNode(int value)
Value = value;
Children = new List<TreeNode>();
// See https://aka.ms/new-console-template for more information
// 创建一个树形结构
using Tree;
internal class Program
static void Main(string[] args)
TreeNode root = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(6);
root.Children.Add(node2);
root.Children.Add(node3);
node2.Children.Add(node4);
node2.Children.Add(node5);
node3.Children.Add(node6);
PrintTreeNode(root);
Console.Read();
static void PrintTreeNode(TreeNode node)
if (node == null)
return;
Console.WriteLine(node.Value);
foreach (TreeNode child in node.Children)
PrintTreeNode(child);
// See https://aka.ms/new-console-template for more information
// 创建一个树形结构
using Tree;
internal class Program
static void Main(string[] args)
TreeNode root = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(6);
root.Children.Add(node2);
root.Children.Add(node3);
node2.Children.Add(node4);
node2.Children.Add(node5);
node3.Children.Add(node6);
IterativeTraversal(root);
Console.Read();
static void IterativeTraversal(TreeNode root)
if (root == null)
return;
//定义一个栈,存放所有的树节点
Stack<TreeNode> stack = new Stack<TreeNode>();
//把根节点压栈
stack.Push(root);
while (stack.Count > 0)
TreeNode node = stack.Pop();
Console.WriteLine(node.Value);
//遍历完父节点后,将子节点压栈
for (int i = node.Children.Count - 1; i >= 0; i--)
stack.Push(node.Children[i]);