php二叉树广度插入数据,php-如何在不使用广度优先遍历的情况下找到二叉树级别k的节点数?...
給定這個二叉樹(實際上,二叉樹可以是隨機的和動態的,這只是一個示例…):
這是給定的事實:
>所有節點都連接到其父節點,以便我們可以從下到上(當然也從上到下)遍歷.
>所有節點都包含有關其左右部分有多少個后代的信息.
問題是這樣的:我需要找到一種方法來計算級別2中的節點總數(實際上,在任何級別上,但到目前為止,讓我們專注于級別2).顯然,如果我們事先知道二叉樹的結構,但假設我們沒有給定的事實,那么答案是3.
這里的另一個問題是我們將從第2級(我們的目標級別)而不是根節點開始.在此示例中,我選擇了NODEF.
我知道使用廣度優先遍歷是直接的解決方案,但是我發現它太耗時,因為每次讀取節點時,我都會從數據庫中查詢它.
我正在尋找一種更實用的方法.但是,如果由于給定的數據不足而無法解決此問題,請讓我知道應提供哪些其他數據以使其可解決.我將評估它是否可行.
我正在通過使用PHP和MySQL來創建網站.但是我只想要解決方案的概念或解釋,更像是算法,而不是編程代碼段或代碼…
我希望有人能回答我…非常感謝!
解決方法:
“廣度優先搜索”是實現此目的的方法.但是,如果您不想使用它,我建議在節點中包括指向兄弟的指針.如果您必須執行這種查詢,通常可以節省很多錢.
編輯:
如果您可以對節點進行非規范化并將所有節點的級別和級別存儲在表中,則可以毫無問題地進行查詢.
SELECT * FROM nodes where level=2
標簽:tree-traversal,binary-tree,mysql,php,algorithm
來源: https://codeday.me/bug/20191102/1989568.html
總結
以上是生活随笔為你收集整理的php二叉树广度插入数据,php-如何在不使用广度优先遍历的情况下找到二叉树级别k的节点数?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 净值型理财产品是什么意思保本吗
- 下一篇: 用c++来开发php的底层模块|用c++