Drzewko
Jungle girlunknown
csharp
a year ago
2.5 kB
6
Indexable
using System; using System.Collections.Generic; namespace DrzewoBinarne { public class BinaryTree<T> { public BinaryTreeNode<T> Root { get; set; } public int Count { get; set; } } public class TreeNode<T> { public T Data { get; set; } public TreeNode<T> Parent { get; set; } public List<TreeNode<T>> Children { get; set; } public int GetHeight() { int height = 1; TreeNode<T> current = this; while (current.Parent != null) { height++; current = current.Parent; } return height; } } public class BinaryTreeNode<T> : TreeNode<T> { public BinaryTreeNode() => Children = new List<TreeNode<T>>(){null, null, null}; public BinaryTreeNode<T> Left { get { return (BinaryTreeNode<T>)Children[0]; } set { Children[0] = value; } } public BinaryTreeNode<T> Right { get { return (BinaryTreeNode<T>)Children[1]; } set { Children[1] = value; } } private void TraversePreOrder(BinaryTreeNode<T> node, List<BinaryTreeNode<T>> result) { if (node != null) { result.Add(node); } TraversePreOrder(node.Left, result); TraversePreOrder(node.Right, result); } } class Program { static void Main(string[] args) { BinaryTree<int> binaryTree = new BinaryTree<int>(); binaryTree.Root = new BinaryTreeNode<int>() { Data = 100 }; binaryTree.Root.Left = new BinaryTreeNode<int>() { Data = 50, Parent = binaryTree.Root }; binaryTree.Root.Right = new BinaryTreeNode<int>() { Data = 150, Parent = binaryTree.Root }; binaryTree.Root.Left.Left = new BinaryTreeNode<int>() { Data = 30, Parent = binaryTree.Root.Left }; PrintBinaryTree(binaryTree.Root, ""); } static void PrintBinaryTree(BinaryTreeNode<int> node, string indent) { Console.WriteLine(indent + "└─ " + node.Data); if (node.Left != null) { PrintBinaryTree(node.Left, indent + " ├─ "); } if (node.Right != null) { PrintBinaryTree(node.Right, indent + " └─ "); } } } }
Editor is loading...
Leave a Comment