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;
}
}