C# 如何遍历 TreeNode 所有节点

思路:

  1. 遍历 foreach
  2. 递归

在这里插入图片描述

/// <summary>
/// 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
/// 只有给定的树是单值二叉树时,才返回 true;否则返回 false。
/// https://leetcode.cn/problems/univalued-binary-tree/
/// </summary>
  	
   class Program{
        static void Main(string[] args)
        {
            //添加一个节点,这个结点是根节点。  
            TreeNode node = new TreeNode();
            node.Text = "1";
       

            TreeNode node1_1 = new TreeNode();
            node1_1.Text = "2";
            TreeNode node1_2 = new TreeNode();
            node1_2.Text = "3";

            TreeNode node2_1 = new TreeNode();
            node2_1.Text = "4";
            TreeNode node2_2 = new TreeNode();
            node2_2.Text = "5";

            TreeNode node2_3 = new TreeNode();
            node2_3.Text = "6";

            node.Nodes.Add(node1_1);//node下的两个子节点。  
            node.Nodes.Add(node1_2);
            node1_1.Nodes.Add(node2_1);//在node1_1下面在添加两个结点。  
            node1_1.Nodes.Add(node2_2);
            node1_2.Nodes.Add(node2_3);//在node1_2下面在添加一个结点。  


            Console.WriteLine(IsUnivalTree(node).ToString());
            Console.ReadKey();
        }

        static List<string> nodeData = new List<string>();//收集所有的结果

        public static bool IsUnivalTree(TreeNode root)
        {
            nodeData.Add(root.Text);
            GetNode(root);

            nodeData.Sort();//通过先排序,在判断第一个值和最后一个值是否相等,进而判断所有节点的值是否是相同的
            return nodeData.First() == nodeData.Last();
        }

       /// <summary>
       /// 通过递归的方式,获取所有节点的值
       /// </summary>
       /// <param name="root"></param>
        private static void GetNode(TreeNode root)
        {
            foreach (TreeNode item in root.Nodes)
            {
                nodeData.Add(item.Text);
                GetNode(item);
            }
        }
    }

版权声明:本文为qq_32849497原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。