Мне нужно создать дерево, как с помощью букв строки. , например: BAT дерево будет выглядеть следующим образомC# tree population
#
/ | \
B A T
/\ /\ /\
A T B T B A
| | | | | |
T A T B A B
я попытался с помощью recursion..but всегда показывал переполнение стека. Может ли кто-нибудь предложить эффективный алгоритм для этого. Логика должна работать для любых букв. Я не добавил свой код здесь, потому что его совершенно неправильно. Я новичок в программировании с использованием структур данных.
Ниже приведен код, я написал:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Tree_recursion
{
class Program
{
static void Main(string[] args)
{
String str;
Console.WriteLine("Word : ");
str = Console.ReadLine();
str = str + "*";
int len = str.Length;
int i=0;
Char[] letters = new char[len];
letters = str.ToCharArray();
Node root = new Node('#');
Node ret_node=new Node();
for (int j = 0; j < len;j++)
{
i = j;
ret_node = root.Addnode(letters[i++]);
}
}
}
class Node
{
public char c;
public List<Node> Child = new List<Node>();
public Node()
{
}
public Node(char ch)
{
Node n=new Node();
n.c=ch;
}
public Node Addnode(char ch)
{
if (ch == '*')
{
return null;
}
else
{
Node n1 = Addnode(ch++);
this.Child.Add(n1);
return n1;
}
}
}
}
Что это дерево должен содержать точно? Все перестановки из 3 букв? Можно ли повторять буквы? что ты уже испробовал? – fejesjoco
Сочетания букв в слове .. – atm007
после заполнения дерева считывается через каждую ветвь. Чтобы получить каждую из комбинаций. Я попробовал рекурсию, но не работает. – atm007