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)); } } }
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()); } }
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); }
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); }
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是因为根结点没有在统计中 } }
string mystr = ""; //空字符串mystr public TreeClass() { root = new TSBNode("", null, null); //构建树的时候需要吧根节点的值初始化一下, //初始化为一个值为“”,孩子兄弟结点均为null的根结点 }
public void setNull(TSBNode node) { node = new TSBNode(null, null, null); }
public void setBroNode(TSBNode broNode) //设置兄弟结点 { bp = broNode; }
public void setSonNode(TSBNode sonNode) //设置孩子结点 { cp = sonNode; }
public TSBNode() //构造空结点 { bp = null; cp = null; }
public TSBNode cp; //指向孩子结点 public TSBNode(string d, TSBNode b, TSBNode c) //构造结点 { data = d; bp = b; cp = c; }