首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 資料結構 - 二元樹節點與樹類別設計 (3)

     編輯:關於C語言

Node 類別 - 二元樹節點

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 指向左右子節點。

BinaryTree 類別 - 樹集合

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 遞迴實作...
}

建構邏輯:依滿二元樹陣列索引規則,從字串按序取字元建立節點,# 略過。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved