Skip to content

Instantly share code, notes, and snippets.

@unilecs
Created September 10, 2021 00:26
Show Gist options
  • Save unilecs/0a8aac8308c1dce726bf65afc0c6f449 to your computer and use it in GitHub Desktop.
Save unilecs/0a8aac8308c1dce726bf65afc0c6f449 to your computer and use it in GitHub Desktop.
Задача: Одинокие узлы двоичного дерева
using System;
using System.Collections.Generic;
public class Program
{
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val, TreeNode left = null, TreeNode right = null)
{
this.val = val;
this.left = left;
this.right = right;
}
}
public static List<int> LonelyNodes;
public static IList<int> GetLonelyNodes(TreeNode root)
{
LonelyNodes = new List<int>();
if (root == null)
return LonelyNodes;
Helper(root);
return LonelyNodes;
}
public static void Helper(TreeNode node)
{
if (node == null)
return;
if (node.left == null && node.right != null)
LonelyNodes.Add(node.right.val);
if (node.left != null && node.right == null)
LonelyNodes.Add(node.left.val);
Helper(node.left);
Helper(node.right);
}
public static void Main()
{
Console.WriteLine("UniLecs");
// test
var root = new TreeNode(2);
root.left = new TreeNode(7);
root.right = new TreeNode(5);
root.left.left = new TreeNode(2);
root.left.right = new TreeNode(6);
root.left.right.left = new TreeNode(5);
root.left.right.right = new TreeNode(11);
root.right.right = new TreeNode(9);
root.right.right.left = new TreeNode(4);
Console.WriteLine(string.Join(", ", GetLonelyNodes(root))); // [9, 4]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment