思路:
- 遍历 foreach
- 递归

/// <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版权协议,转载请附上原文出处链接和本声明。