public class Node
{
private object _data;
private Node _left, _right;
public object Data { get { return _data; } }
public Node Left { get { return _left; } set { _left = value; } }
public Node Right { get { return _right; } set { _right = value; } }
public Node(object data) { _data = data; }
public override string ToString() { return _data.ToString(); }
}
三個屬性:Data 儲存資料,Left/Right 指向左右子節點。
public class BinaryTree
{
private Node _head;
private string cStr; // 建構字串
public Node Head { get { return _head; } }
public BinaryTree(string constructStr)
{
cStr = constructStr;
_head = new Node(cStr[0]);
Add(_head, 0);
}
private void Add(Node parent, int index)
{
int leftIndex = 2 * index + 1;
if (leftIndex < cStr.Length && cStr[leftIndex] != '#')
{
parent.Left = new Node(cStr[leftIndex]);
Add(parent.Left, leftIndex);
}
int rightIndex = 2 * index + 2;
if (rightIndex < cStr.Length && cStr[rightIndex] != '#')
{
parent.Right = new Node(cStr[rightIndex]);
Add(parent.Right, rightIndex);
}
}
// PreOrder, MidOrder, AfterOrder 遞迴實作...
}
建構邏輯:依滿二元樹陣列索引規則,從字串按序取字元建立節點,# 略過。