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 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 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是因为根结点没有在统计中 } }