Esempio n. 1
0
        public TSBNode searchValue(TSBNode node, string value)  //返回查找到的结点
        {
            TSBNode temp;

            if (node == null)
            {
                return(null);
            }
            else if (node.getValue() == value)
            {
                return(node);
            }
            else
            {
                temp = searchValue(node.getSonNode(), value);
                if (temp != null)
                {
                    return(temp);
                }
                else
                {
                    return(searchValue(node.getBroNode(), value));
                }
            }
        }
Esempio n. 2
0
        public void displayTree(TSBNode node)
        {
            string sb, son;

            if (node != null)
            {
                if (node.getBroNode() == null)            //判断该结点的兄弟结点是否为空,若为空则显示null,若不空则显示它的值
                {
                    sb = "Null";
                }
                else
                {
                    sb = node.getBroNode().getValue().ToString();
                }

                if (node.getSonNode() == null)        ////判断该结点的孩子结点是否为空,若为空则显示null,若不空则显示它的值
                {
                    son = "Null";
                }
                else
                {
                    son = node.getSonNode().getValue().ToString();
                }

                mystr += node.getValue().ToString() + "\t\t\n" + son + "\t\t\t\n" + sb + "\r\n";
                displayTree(node.getSonNode());
                displayTree(node.getBroNode());
            }
        }
Esempio n. 3
0
        public TSBNode insertBroNode(TSBNode targetNode, string value)  //插入兄弟结点
        {
            TSBNode nowBroNode = new TSBNode(value, null, null);
            TSBNode preBroNode = targetNode.getBroNode();

            if (preBroNode != null)
            {
                nowBroNode.setBroNode(targetNode.getBroNode());   //先前的兄弟变成现在兄弟的兄弟,然后再添加兄弟
            }
            targetNode.setBroNode(nowBroNode);
            return(nowBroNode);
        }
Esempio n. 4
0
        public TSBNode insertSonNode(TSBNode targetNode, string value) //插入孩子结点
        {
            TSBNode nowSonNode = new TSBNode(value, null, null);
            TSBNode preSonNode = targetNode.getSonNode();

            if (preSonNode != null)
            {
                nowSonNode.setBroNode(preSonNode);     //先见前孩子变成现在孩子的兄弟,然后再添加孩子
            }
            targetNode.setSonNode(nowSonNode);
            return(nowSonNode);
        }
Esempio n. 5
0
        public int getCount(TSBNode node)       //得到树的结点个数的递归算法
        {
            int cs, cb;

            if (node == null)
            {
                return(0);
            }
            else
            {
                cs = getCount(node.getSonNode());
                cb = getCount(node.getBroNode());
                return(cs + cb + 1);              //加1是因为根结点没有在统计中
            }
        }
Esempio n. 6
0
        string mystr = "";          //空字符串mystr

        public TreeClass()
        {
            root = new TSBNode("", null, null);     //构建树的时候需要吧根节点的值初始化一下,
                                                    //初始化为一个值为“”,孩子兄弟结点均为null的根结点
        }
Esempio n. 7
0
 public void setNull(TSBNode node)
 {
     node = new TSBNode(null, null, null);
 }
Esempio n. 8
0
 public void setBroNode(TSBNode broNode)     //设置兄弟结点
 {
     bp = broNode;
 }
Esempio n. 9
0
 public void setSonNode(TSBNode sonNode)        //设置孩子结点
 {
     cp = sonNode;
 }
Esempio n. 10
0
 public TSBNode()         //构造空结点
 {
     bp = null;
     cp = null;
 }
Esempio n. 11
0
        public TSBNode cp;                             //指向孩子结点

        public TSBNode(string d, TSBNode b, TSBNode c) //构造结点
        {
            data = d;
            bp   = b;
            cp   = c;
        }