Подсчет узлов содержащих два поддерева в бинарном дереве - C#

Узнай цену своей работы

Формулировка задачи:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            Tree t = new Tree();
            int c = 0;
            t.Insert(8);
            t.Insert(6);
            t.Insert(10);
            t.Insert(12);
            t.Insert(45);
            t.Insert(3);
            t.Insert(4);
            t.Insert(2);
            t.Insert(1);
            t.Insert(0);
 
            Console.WriteLine(t.Display());
            Console.WriteLine(t.Count(c));
            Console.ReadKey();
        }
    }
    class Tree
    {
        private int value;
        private Tree left;
        private Tree right;
        public Tree()
        {
            this.value = 0;
        }
        public void Insert(int value)
        {
            if (this.value == 0)
                this.value = value;
            else
            {
                if (this.value < value)
                {
                    if (left == null)
                        this.left = new Tree();
                    left.Insert(value);
                }
                else if (this.value > value)
                {
                    if (right == null)
                        this.right = new Tree();
                    right.Insert(value);
                }
                else
                    throw new Exception("Узел уже существует");
            }
        }
        public string Display()
        {
            string result = "";
            if (this.left != null)
                result += this.left.Display();
 
            result += this.value + " ";
 
            if (this.right != null)
                result += this.right.Display();
 
            return result;
        }
        public int Count(int c)
        {
            if ((left != null) && (right != null)) c++;
            if (this.left!= null) this.left.Count(c);
            if (this.right!= null) this.right.Count(c);
            return c;
        }
            
    }
}
Функция Count работает не так как нужно(всегда возвращает 1)

Решение задачи: «Подсчет узлов содержащих два поддерева в бинарном дереве»

textual
Листинг программы
public int Count(ref int c)
        {
            if ((left != null) && (right != null)) c++;
            if (this.left!= null) this.left.Count(ref c);
            if (this.right!= null) this.right.Count(ref c);
            return c;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы