樹結構以及簡單實現

2021-10-07 18:56:30 字數 2639 閱讀 3671

樹結構,一種非線性結構,指的是n個有父子關係節點的有限集合。

樹中任一節點可以有0或多個子節點,但只能有乙個父節點。根節點是乙個特例,根節點沒有父節點,葉子節點沒有子節點。樹中每個節點既可以是其上一級節點的子節點,也可以是下一級節點的父節點,因此同乙個節點可以既是父節點,也是子節點。

如果按節點是否包含子節點來分,節點分成以下兩種:

如果按節點是否具有唯一的父節點來分,節點又可分為如下兩種:

父節點表示法

樹中除根節點之外的每個節點都有乙個父節點。為了記錄樹中節點與節點之間的父子關係,可以為每個節點增加乙個parent域,用以記錄該節點的父節點。

// 以指定根節點建立樹

public treeparent(e data)

// 以指定根節點、指定treesize建立樹

public treeparent(e data, int treesize)

// 為指定節點新增子節點

public void addnode(e data, node parent)

}throw new runtimeexception();

}public boolean empty()

// 返回根節點

public noderoot()

// 返回指定節點的父節點

public nodeparent(node node)

// 返回指定節點(非葉子節點)的所有子節點

public list> children(node parent)

}return list;

}// 返回該樹的深度

public int deep()

if (max < def)

}return max;

}// 返回包含指定值的節點

private int pos(node parent)

}return -1;}}

子節點鏈表示法

由每個節點記住它的所有子節點。

//使用乙個node陣列來記錄該樹裡所有節點

private node nodes;

//記錄節點數

private int nodenums;

//以指定根節點建立樹

public treechild(e data)

//以指定根節點、指定treesize建立樹

public treechild(e data, int treesize)

//為指定節點新增子節點

public void addnode(e data, node parent) else

next.next = new sonnode(i, null);

}nodenums++;

return;}}

throw new runtimeexception();

}//判斷是否為空

public boolean empty()

//返回根節點

public noderoot()

//返回指定節點(非葉子結點)的所有子節點

public list> children(node parent)

return list;

}//返回指定節點(非葉子節點)的第index個子節點

public nodechild(node parent, int index)

next = next.next;

}return null;

}//返回該樹的深度

public int deep()

private int deep(node node) else

next = next.next;

}return max + 1;}}

//返回包含指定值的節點

public int pos(node node)

}return -1;}}

關於面試的樹結構簡單實現

我們面試的時候,會遇到這樣的筆試題目 如下面的資料 1 1 1 1 1 2 1 2 2 2 3 1 3 3 3 4 2 4 4 4 5 3 5 5 5 讓你簡單的設計一下,實現樹結構 其實也就是 id 和 pid 的問題,多的不說,直接上 哈哈,拙見,有不足之處請大家指出 首先是乙個測試類 也是乙個...

Python python實現樹結構

樹是我們常見的一種一對多的資料結構。最近為了處理一些事情,寫了一顆三層的樹。每層的子節點數目均不確定,動態新增。為了方便管理,寫成了巢狀樹。class modeltree 第一層樹,建立樹是必須指定根結點,不支援建立空樹。整顆樹儲存在tree dict中,key為root,value為childre...

vue element 實現樹結構

話不多說直接先上圖 allxzlist 這個是獲取的全部的值 props1 這個是我們要展示的模板 defaultcheckedkeys 這個是獲取詳情或者想要設定的預設值 defaultexpandedkeys 這個是獲取詳情或者想要設定的預設值 handlecheckchange data,ch...