簡單。
樹:
(77(1()())())
葉是這樣的形式:(整數()())
因此樹只有一個葉:(1()())
該葉節點的總和爲78. 78不是77.結果:no。
你認爲是最右邊的路徑,沒有根據定義。
第一棵樹:
(-1()())
這僅僅是一個單一的葉節點。一條路。總和是-1。 -1 = -1。結果:是。
我們可以用一個Lisp程序檢查:
(defun leaf-p (node)
"is the node a leaf?"
(and (= (length node) 3)
(integerp (first node))
(null (second node))
(null (third node))))
(defun path-sums (tree)
"returns a list of all sums for each path"
(if (leaf-p tree)
(list (first tree))
(mapcar (lambda (s)
(+ (first tree) s))
(append (when (second tree)
(path-sums (second tree)))
(when (third tree)
(path-sums (third tree)))))))
(defun tree-sum-p (sum tree)
(member sum (path-sums tree)))
CL-USER 223 > (path-sums '(-1()()))
(-1)
CL-USER 224 > (path-sums '(77(1()())()))
(78)
不過,爲什麼是第一個例子「是」正確的答案?如果第二個最右邊的路徑沒有,那麼第一個路徑應該是none。 – unclerojelio 2010-03-13 14:50:35
@unclerojelio:第一個只有一片葉子,一條路徑。 – 2010-03-13 14:58:33
感謝您的幫助! – unclerojelio 2010-03-13 15:16:12