Я пытаюсь сделать инфикс для преобразователя постфикса. Я уже искал код в Google, но большинство алгоритмов были со стеком или использовали лоты регулярных выражений или трудно понять, но я хочу сделать это с двоичным деревом.public class Node
{
private object element;
private Node left;
private Node right;
private Node parent;
public Node()
{
}
public Node(object x, Node r, Node l)
{
element = x;
right = r;
left = l;
}
public object GetElement()
{
return element;
}
public void SetElement(object x)
{
element = x;
}
public Node GetLeft()
{
return left;
}
public void SetLeft(Node l)
{
left = l;
}
public Node GetRight()
{
return right;
}
public void SetRight(Node r)
{
right = r;
}
public Node GetParent()
{
return parent;
}
public void SetParent(Node p)
{
parent = p;
}
}
< /code>
Извините за использование get /set вместо простого само свойства. />public class BinarySearchTree
{
//Node r: root.
public void Insert(Node r, Node p, object x)
{
if (r == null)
{
r = new Node(x, null, null);
r.SetParent(p);
if ((int)x < (int)p.GetElement())
p.SetLeft(r);
else if ((int)x > (int)p.GetElement())
p.SetRight(r);
}
if ((int) x < (int) r.GetElement())
Insert(r.GetLeft(), r, x);
else if ((int) x > (int) r.GetElement())
Insert(r.GetRight(), r, x);
}
public void PreOrder(Node p)
{
if (p != null)
{
Console.WriteLine(p.GetElement());
PreOrder(p.GetLeft());
PreOrder(p.GetRight());
}
}
public void Inorder(Node p)
{
if (p != null)
{
Inorder(p.GetLeft());
Console.WriteLine(p.GetElement());
Inorder(p.GetRight());
}
}
public void Postorder(Node p)
{
if (p != null)
{
Postorder(p.GetLeft());
Postorder(p.GetRight());
Console.WriteLine(p.GetElement());
}
}
}
< /code>
Мой метод вставки - это работа для чисел, например:
Если мы хотим написать порядок, предварительный заказ и порядок порядок дерева ниже < /p>
https://i.sstatic.net/8zvh. /> предварительный заказ: 5, 3, 2, 4, 7, 6, 12
posterder: 2, 4, 3, 6, 12, 7, 5
inorder: 2, 3, 4, 5, 6, 7, 12 < /p>
Основной метод для этого примера: < /p>
Для этого примера: < /p>
< /p>
private static void Main()
{
BinarySearchTree bst = new BinarySearchTree();
Node r = new Node(5, null, null);
bst.Insert(r, null, 3);
bst.Insert(r, null, 7);
bst.Insert(r, null, 4);
bst.Insert(r, null, 12);
bst.Insert(r, null, 2);
bst.Insert(r, null, 6);
bst.Inorder(r);
Console.WriteLine();
bst.Postorder(r);
Console.WriteLine();
bst.PreOrder(r);
}
< /code>
Теперь я хочу сделать инфикс для преобразователя Postfix, но не знаю, как реализовать метод вставки для этого и как обрабатывать операторы и операции по порядку. и другая проблема - это скобки.
была бы благодарна, если поможет мне с каким -то кодом. /> Mathblog имеет инфикс в PostFix Converter, вы можете проверить свой с ним.>
Подробнее здесь: https://stackoverflow.com/questions/270 ... inary-tree
Преобразовать инфикс в постфикс с бинарным деревом ⇐ C#
Место общения программистов C#
-
Anonymous
1751969265
Anonymous
Я пытаюсь сделать инфикс для преобразователя постфикса. Я уже искал код в Google, но большинство алгоритмов были со стеком или использовали лоты регулярных выражений или трудно понять, но я хочу сделать это с двоичным деревом.public class Node
{
private object element;
private Node left;
private Node right;
private Node parent;
public Node()
{
}
public Node(object x, Node r, Node l)
{
element = x;
right = r;
left = l;
}
public object GetElement()
{
return element;
}
public void SetElement(object x)
{
element = x;
}
public Node GetLeft()
{
return left;
}
public void SetLeft(Node l)
{
left = l;
}
public Node GetRight()
{
return right;
}
public void SetRight(Node r)
{
right = r;
}
public Node GetParent()
{
return parent;
}
public void SetParent(Node p)
{
parent = p;
}
}
< /code>
Извините за использование get /set вместо простого само свойства. />public class BinarySearchTree
{
//Node r: root.
public void Insert(Node r, Node p, object x)
{
if (r == null)
{
r = new Node(x, null, null);
r.SetParent(p);
if ((int)x < (int)p.GetElement())
p.SetLeft(r);
else if ((int)x > (int)p.GetElement())
p.SetRight(r);
}
if ((int) x < (int) r.GetElement())
Insert(r.GetLeft(), r, x);
else if ((int) x > (int) r.GetElement())
Insert(r.GetRight(), r, x);
}
public void PreOrder(Node p)
{
if (p != null)
{
Console.WriteLine(p.GetElement());
PreOrder(p.GetLeft());
PreOrder(p.GetRight());
}
}
public void Inorder(Node p)
{
if (p != null)
{
Inorder(p.GetLeft());
Console.WriteLine(p.GetElement());
Inorder(p.GetRight());
}
}
public void Postorder(Node p)
{
if (p != null)
{
Postorder(p.GetLeft());
Postorder(p.GetRight());
Console.WriteLine(p.GetElement());
}
}
}
< /code>
Мой метод вставки - это работа для чисел, например:
Если мы хотим написать порядок, предварительный заказ и порядок порядок дерева ниже < /p>
https://i.sstatic.net/8zvh. /> предварительный заказ: 5, 3, 2, 4, 7, 6, 12
posterder: 2, 4, 3, 6, 12, 7, 5
inorder: 2, 3, 4, 5, 6, 7, 12 < /p>
Основной метод для этого примера: < /p>
Для этого примера: < /p>
< /p>
private static void Main()
{
BinarySearchTree bst = new BinarySearchTree();
Node r = new Node(5, null, null);
bst.Insert(r, null, 3);
bst.Insert(r, null, 7);
bst.Insert(r, null, 4);
bst.Insert(r, null, 12);
bst.Insert(r, null, 2);
bst.Insert(r, null, 6);
bst.Inorder(r);
Console.WriteLine();
bst.Postorder(r);
Console.WriteLine();
bst.PreOrder(r);
}
< /code>
Теперь я хочу сделать инфикс для преобразователя Postfix, но не знаю, как реализовать метод вставки для этого и как обрабатывать операторы и операции по порядку. и другая проблема - это скобки.
была бы благодарна, если поможет мне с каким -то кодом. /> Mathblog имеет инфикс в PostFix Converter, вы можете проверить свой с ним.>
Подробнее здесь: [url]https://stackoverflow.com/questions/27050641/convert-infix-to-postfix-with-binary-tree[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия