欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 遞歸樹型結構

陳好昌1年前8瀏覽0評論

Javascript遞歸樹型結構,指的是通過遞歸算法實現樹型結構。在實際開發中,樹型結構是非常常見的一種數據結構。我們可以通過使用遞歸算法來實現樹型結構,實現對樹形結構的操作。

舉個栗子,我們可以考慮下面這個場景:一個公司有很多個部門,每個部門下又有很多員工,員工還可能再細分為多個子部門,如何用 JavaScript 來實現樹型結構的操作呢?

// 創建原始數據
let company = {
"公司": {
"CEO": "張三",
"人力資源部": {
"部長": "李四",
"員工1": "王五",
"員工2": "趙六"
},
"銷售部": {
"部長": "孫七",
"員工1": "周八",
"員工2": "吳九",
"銷售一部": {
"主管": "李十",
"員工1": "魯十一",
"員工2": "金十二"
}
}
}
}

以上就是我們需要操作的數據結構,公司是根節點,而下面有多層的子節點,需要通過遞歸算法來實現。

// 遞歸遍歷樹型結構代碼
function print(node, deep) {
let t = "";
for (let i = 0; i < deep; i++) {
t += "-";
}
console.log(t + node.name);
if (node.children) {
for (let i = 0; i < node.children.length; i++) {
print(node.children[i], deep + 1);
}
}
}
let tree = {
name: "公司",
children: [
{
name: "CEO",
},
{
name: "人力資源部",
children: [
{
name: "部長",
},
{
name: "員工1",
},
{
name: "員工2",
}
]
},
{
name: "銷售部",
children: [
{
name: "部長",
},
{
name: "員工1",
},
{
name: "員工2",
},
{
name: "銷售一部",
children: [
{
name: "主管",
},
{
name: "員工1",
},
{
name: "員工2",
},
]
}
]
}
]
}
// 輸出結果
print(tree, 0);

在這段代碼中,我們定義了一個 print 函數。這個函數接收兩個參數:節點和當前深度。如果當前節點存在 children,我們就繼續遍歷下一個節點的子節點,直到子節點的 children 為空。通過遞歸,我們就能夠遍歷整個樹形結構。

并且我們也可以通過遞歸算法來找到某一個節點的子節點,示例如下:

// 查找某個節點
function search(node, name) {
if (node.name === name) {
console.log(node);
} else if (node.children) {
for (let i = 0; i < node.children.length; i++) {
search(node.children[i], name);
}
}
}
// 輸出結果
search(tree, "員工1");

通過以上這些操作,我們就能夠靈活地操作 JavaScript 中的樹型結構數據了。