問題:
給乙個二叉樹,把所有的路徑都列印出來。
比如,對於下面這個二叉樹,它所有的路徑為:
8 -> 3 -> 1
8 -> 2 -> 6 -> 4
8 -> 3 -> 6 -> 7
8 -> 10 -> 14 -> 13
思路:從根節點開始,把自己的值放在乙個陣列裡,然後把這個陣列傳給它的子節點,子節點同樣把自己的值放在這個陣列裡,又傳給自己的子節點,直到這個節點是葉節點,然後把這個陣列列印出來。所以,我們這裡要用到遞迴。
**:
public static arraylist> printpaths(node root)
public static void printpathshelper(node root, arraylistlist, arraylist> alllists)
printpathshelper(root.leftchild, list, alllists);
printpathshelper(root.rightchild, list, alllists);
//remove the sub-root;
list.remove(list.size() - 1);
}
二叉樹列印所有的路徑 根據陣列構建完全二叉樹
這道題目暫時沒想起來怎麼用遞迴去做,就用非遞迴吧。這道題目是的位址是 主要是用了乙個vector來儲存節點資訊,這個節點資訊是對原來節點資訊的封裝,增加了兩個單獨的引數,這兩個引數表示 左右子樹是不是存在以及是不是訪問過 預設值是 1,取0表示有子樹且沒有訪問過,取1錶子樹已經訪問過。基本邏輯是先沿...
列印二叉樹的路徑
本題源自leetcode 思路1 遞迴 先訪問根節點。然後遞迴遍歷左子樹和右子樹。遇到葉節點則儲存路徑。vectorbinarytreepaths treenode root void findpath treenode root,vector res,string s if root left i...
二叉樹的所有路徑
一 問題描述 給一棵二叉樹,找出從根節點到葉子節點的所有路徑。樣例 給出下面這棵二叉樹 1 2 3 5 所有根到葉子的路徑為 1 2 5 1 3 二 解題思路 運用遞迴的思想查詢二叉樹的所有路徑,定義乙個向量用來儲存路徑,然後運用前序遍歷二叉樹,返回查詢的的路徑,在庫檔案string中,to str...