N叉树的结点定义

N叉树

N叉树

public class TreeNode{
    
    
  public int data;
  public TreeNode firstChild;
  public TreeNode secondChild;
  public TreeNode thirdChild;
  ...
  ...
}

由于并不是在所有的情况下都需要使用所有的指针,所以将导致大量的内存浪费,此外,另外一个问题是事先不知道节点个数

N叉树的表示

因为需要遍历树中的所有节点,所以一种可能的解决方法是:
1.同一个双亲节点(兄弟)孩子节点从左至右排列
2.双亲节点只能指向第一个孩子节点,删除从双亲节点到其他孩子节点的指针链接,
上述的具体含义是,如果孩子节点之间有一条链路相连,那么双亲节点就不需要额外的指针指向所有的孩子节点。这是因为从双亲节点的第一个孩子节点开始就能够遍历所有节点,因此,只要双亲节点用一个指针指向其第一个孩子节点,且同一个双亲节点的所有孩子之间都有链路,就可以解决上述问题

代码定义表示

public class TreeNode{
    
    
  public int data;
  public TreeNode firstChild;
  public TreeNode nextSibling;
  
  public int getData(){
    
    
    return data;
  }
  
  public void setData(int data){
    
    
    this.data = data;
  }

  public BinaryTreeNode getFirstChild(){
    
    
    return firstChild;
  }

  public void setFirstChild(BinaryTreeNode firstChild){
    
    
    this.firstChild = firstChild;
  }

  public BinaryTreeNode getNextSibling(){
    
    
    return nextSibling;
  }

  public void setNextSibling(BinaryTreeNode nextSib ling){
    
    
    this.nextSibling = nextSibling;
  }


}

猜你喜欢

转载自blog.csdn.net/weixin_37632716/article/details/114949294