樹結構,一種非線性結構,指的是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...