コード例 #1
0
        public BinaryLinkTree(T[] dataSource)
        {
            this.dataSource = dataSource;

            this.root = new DataStructure.TwoNode <T>();


            this.root.index = 0;
        }
コード例 #2
0
        public TwoNode <T> CreatRight(TwoNode <T> node)
        {
            if (node != null)
            {
                node.Right = new TwoNode <T>();

                node.Right.index = 2 * node.index + 2;
                GenerateRoot(node.Right);
            }
            return(node.Right);
        }
コード例 #3
0
        public TwoNode <T> CreateLeft(TwoNode <T> node)
        {
            if (node != null)
            {
                node.Left = new TwoNode <T>();

                node.Left.index = 2 * node.index + 1;
                GenerateRoot(node.Left);
            }
            return(node.Left);
        }
コード例 #4
0
        /// <summary>
        /// 生成父节点
        /// </summary>
        /// <param name="node"></param>
        public void GenerateRoot(TwoNode <T> node)
        {
            if (node.index < dataSource.Length)
            {
                if (dataSource[node.index].Equals(default(T)))
                {
                    return;
                }
                node.Data = dataSource[node.index];

                node.Left  = CreateLeft(node);
                node.Right = CreatRight(node);
            }
        }
コード例 #5
0
 public TwoNode(T data, TwoNode <T> left, TwoNode <T> right) : base(data)
 {
     this.data  = data;
     this.left  = left;
     this.right = right;
 }
コード例 #6
0
 public TwoNode(T data, TwoNode <T> left) : this(default(T), null, null)
 {
     this.data = data;
     this.left = left;
 }