N-aryツリーノードの定義

N-aryツリー

N-aryツリー

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

すべての場合にすべてのポインタを使用する必要はないため、メモリの浪費につながります。さらに、ノードの数が事前にわからないという問題もあります。

N-aryツリーの表現

ツリー内のすべてのノードをトラバースする必要があるため、考えられる解決策の1つは次のとおり
です。1。同じ親ノード(兄弟)の子ノードを左から右に配置します
。2。親ノードは最初の子ノードのみを指すことができます。削除親ノードから他の子ノードへのノードのポインタリンク
上記の特定の意味は、子ノード間にリンクがある場合、親ノードはすべての子ノードを指すために追加のポインタを必要としないということです。これは、すべてのノードが親ノードの最初の子ノードからトラバースできるためです。したがって、親ノードがポインターで最初の子ノードを指し、同じ親ノードのすべての子の間にリンクがある限り、Can上記の問題を解決する

コード定義表現

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