/*** 輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。
* 路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
* 其實我一開始並沒有想到先序遍歷,而是用類似深搜的方法,不斷地往下走,直到找到葉節點
* 然後看sum是否與target相等
* 但有個問題就是,遍歷完某個結點的左孩子後,在遍歷右孩子的時候,發現左孩子留了在list中。
* 有乙個辦法就是在遍歷之前再建立乙個一模一樣的list,這就是額外的空間消耗了。
* 用先序遍歷其實思路一樣,但是用的是乙個棧來維護,在遍歷完某個結點的左右孩子後,需要將這個節點出棧。
* @author admin
* */
public class pathsum
public static void findpath(treenode current,int sum,int target,arrayliststack)
//如果不相等,也需要出棧,所以這裡不return
}if(current.left!=null)
if(current.right!=null)
//current結點出棧
stack.remove(stack.size()-1);
}}}
劍指offer 二叉樹中和為某一路徑的和
一 問題描述 輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。二 思路 採用遞迴思想,如果某一路徑和為目標值且當前節點是葉子節點,那麼將當前路徑存入所求的陣列中,如果不是,遞迴遍歷左子樹和右子樹,但是一定要記...
劍指offer 10二叉樹和為某一路徑值
輸入一顆二叉樹的跟節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。要求一路徑的和,那麼必然終止條件為葉子結點,從根結點出發,從左往右,每條路徑的和都與給定的值比較,自然能求出。但往往二叉樹的題,都會用到遞迴,本身是二叉...
二叉樹(五)二叉樹中某一路徑之和為某一整數
思路 對於二叉樹中的某一節點,如果是葉子節點,將其加入到path中,乙個vector 然後算vector中的和是否為需要的整數,如果是就列印出來,如果和不滿足就退出函式,退出前pop vector 如果不是葉子節點,直接將當前值加入到path中,再遞迴呼叫,當前節點變為當前節點的左節點,右節點 本函...