二叉樹 路徑

2021-07-12 02:05:24 字數 1107 閱讀 6208

二叉樹中,從根節點到葉節點的每一條連線,我們稱之為路徑,最短路徑和最長路徑在之前的部落格中,我們已經完成了對他們的討論,現在我們討論一下,輸出一棵二叉樹中全部的路徑資訊。**如下所示:

public

class operation

childbinarytreepath(root, "");

return result;

}public

void

childbinarytreepath(treenode root, string path)

//將所有路徑按照從左到右的順序來進行儲存,

if (root.left != null)

if (root.right != null)

}}

下面是非遞迴的方式:

public

list

<

string

> binarytreepaths2(treenode root)

//從左到右的順序

stack

.push(new

pair(n.right, str+n.val+

"->"));

stack

.push(new

pair(n.left, str+n.val+

"->"));}}

return ret;

}public

list

<

string

> binarytreepaths(treenode root)

//依然是從左到右

queue

.add(new

pair(n.left, str+n.val+

"->"));

queue

.add(new

pair(n.right, str+n.val+

"->"));}}

return ret;

}

非遞迴思想:利用棧或者是佇列,節點不為空,進棧,並且儲存路徑資訊,然後出棧判斷,如果為葉子節點,那麼加入到結果集中,否則,繼續儲存;資料結構pair儲存的下乙個節點+到該節點父節點的整個路徑。

Binary Tree Paths二叉樹路徑

問題描述 given a binary tree,return all root to leaf paths.給定乙個二叉樹,返回所有從根節點到葉子節點的路徑。思路 深度優先遍歷中的前序遍歷 給定子樹,先訪問根節點,再訪問左節點,最後訪問右節點 非遞迴的實現方式通過堆疊輔助。由於題目要求返回所有 根...

二叉樹路徑總和

給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。說明 葉子節點是指沒有子節點的節點。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 1 返回 true,因為存在目標和為 22 的根節點到葉子節點的路徑 5 ...

二叉樹最長路徑

先參考最長子序列求解方法,先序遍歷的時候,我們把當前遍歷的分支作為乙個序列,然後利用最長序列的方式求解。遞迴過程中,保留樹的高度,用高度差作為長度。注意遞迴結束時,需要從雜湊表中移除當前節點的值。include include include include const int tag 100 st...