你們可以幫我用算法來做這些事嗎?我已經執行了前序,中序和後序,並且我得到了用這些命令之一遍歷樹的提示。我使用dotty標籤(或「訪問」)節點。計算樹的深度和後裔
深度是從根部到底部葉子的邊緣數量,所以每次移動時,我都會向深度添加+1?像那樣的東西?
不知道後代的算法。他們詢問特定節點自身的節點數量。
這些是正常的樹木btw。
你們可以幫我用算法來做這些事嗎?我已經執行了前序,中序和後序,並且我得到了用這些命令之一遍歷樹的提示。我使用dotty標籤(或「訪問」)節點。計算樹的深度和後裔
深度是從根部到底部葉子的邊緣數量,所以每次移動時,我都會向深度添加+1?像那樣的東西?
不知道後代的算法。他們詢問特定節點自身的節點數量。
這些是正常的樹木btw。
depth(tree) = 1+ max(depth(tree.left), depth(tree.right));
descendants(tree) = descendants(tree.left) + descendants(tree.right);
對於任一情況,返回0代表空指針會結束遞歸。
這是一個家庭作業的問題?我的回答假設它是作業。
樹是遞歸數據結構,所以對它們進行操作的算法通常是遞歸的。遞歸算法需要基礎案例和歸納案例。對於樹,基本情況將是您在訪問葉節點時(即沒有孩子的節點)所做的事情。歸納情況將是您在訪問內部節點時(即至少有一個孩子的節點)所做的事情。
爲了計算深度(或樹的「高度」):
爲了計算後代計數:
我鼓勵你提出澄清問題。
'子孫'將永遠返回0. – Potatoswatter 2010-05-05 04:29:00
@Patatoswatter:是的,因爲它看起來像功課,我故意留下了一些東西讓他自己想出來...... – 2010-05-05 13:57:00