C# 두 갈래 트리 구현
22289 단어 두 갈래 나무
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace BinaryTree
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 Tree<int> myTree = new Tree<int>(5);
14 for (int i = 0; i < 10; i++)
15 {
16 myTree.Insert(i);
17 }
18 //myTree.WideOrderTree();
19 //myTree.PreOrderTree(myTree);
20 //myTree.InOrderTree(myTree);
21 myTree.PostOrderTree(myTree);
22 }
23
24 //
25 public class Tree<T> where T : IComparable<T>
26 {
27 private T data;
28 private Tree<T> leftTree;
29 private Tree<T> rightTree;
30
31 //
32 public T Data
33 {
34 get
35 {
36 return data;
37 }
38 set
39 {
40 data = value;
41 }
42 }
43
44 public Tree<T> LeftTree
45 {
46 get
47 {
48 return leftTree;
49 }
50 set
51 {
52 leftTree = value;
53 }
54 }
55
56 public Tree<T> RightTree
57 {
58 get
59 {
60 return rightTree;
61 }
62 set
63 {
64 rightTree = value;
65 }
66 }
67
68 // ,
69 public Tree(T data)
70 {
71 this.data = data;
72 leftTree = null;
73 rightTree = null;
74 }
75
76 /// <summary>
77 ///
78 ///
79 ///
80 /// </summary>
81 public void Insert(T data)
82 {
83 T dataNow = Data;
84 if (data.CompareTo(dataNow) < 0)
85 {
86 if (LeftTree == null)
87 {
88 LeftTree = new Tree<T>(data);
89 }
90 else
91 {
92 LeftTree.Insert(data);
93 }
94 }
95 else
96 {
97 if (RightTree == null)
98 {
99 RightTree = new Tree<T>(data);
100 }
101 else
102 {
103 RightTree.Insert(data);
104 }
105 }
106 }
107
108 /// <summary>
109 /// :
110 /// </summary>
111 public void PreOrderTree(Tree<T> root)
112 {
113 if (root != null)
114 {
115 Console.WriteLine(root.Data);
116 PreOrderTree(root.LeftTree);
117 PreOrderTree(root.RightTree);
118 }
119 }
120
121 /// <summary>
122 /// :
123 /// </summary>
124 public void InOrderTree(Tree<T> root)
125 {
126 if (root != null)
127 {
128 InOrderTree(root.LeftTree);
129 Console.WriteLine(root.Data);
130 InOrderTree(root.RightTree);
131 }
132 }
133
134 /// <summary>
135 /// :
136 /// </summary>
137 public void PostOrderTree(Tree<T> root)
138 {
139 if (root != null)
140 {
141 PostOrderTree(root.LeftTree);
142 PostOrderTree(root.RightTree);
143 Console.WriteLine(root.Data);
144 }
145 }
146
147 /// <summary>
148 /// :
149 /// 1. , , 。
150 /// 2. , 0。
151 /// </summary>
152 public void WideOrderTree()
153 {
154 List<Tree<T>> nodeList = new List<Tree<T>>();
155 nodeList.Add(this);
156 Tree<T> temp = null;
157 while (nodeList.Count > 0)
158 {
159 Console.WriteLine(nodeList[0].Data);
160 temp = nodeList[0];
161 nodeList.RemoveAt(0);
162 if (temp.LeftTree != null)
163 {
164 nodeList.Add(temp.LeftTree);
165 }
166 if (temp.RightTree != null)
167 {
168 nodeList.Add(temp.RightTree);
169 }
170 }
171 }
172 }
173 }
174 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PAT A급 1064 Complete Binary Search Tree(30점) 완전 두 갈래 나무, BST1064 Complete Binary Search Tree(30분) A Binary Search Tree (BST) is recursively defined as a binary tree which has the f...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.