二叉樹中所有距離為 K 的結點

2021-09-27 01:58:38 字數 1212 閱讀 2342

class tree;

private static listnodelist = null;

private static class node

}public void createbintree()

// 對前lastparentindex-1個父節點按照父節點與孩子節點的數字關係建立二叉樹

for (int parentindex = 0; parentindex < array.length / 2 - 1; parentindex++)

// 最後乙個父節點:因為最後乙個父節點可能沒有右孩子,所以單獨拿出來處理

int lastparentindex = array.length / 2 - 1;

// 左孩子

nodelist.get(lastparentindex).leftchild = nodelist

.get(lastparentindex * 2 + 1);

// 右孩子,如果陣列的長度為奇數才建立右孩子

if (array.length % 2 == 1)

}/**

* 首先找到每個節點的父節點,利用map儲存(map底層用紅黑樹實現,所以查詢效率也高),

* 這種方法克服了二叉樹只能找到自己的兒子的缺點。

* 然後用dfs搜尋的方法尋找目標節點。

*/static mappar;

static void parent(node root)

if (root.rightchild != null)

}static void dfs(node root, int k, listvisit, vectorres)

if(root.leftchild != null)

dfs(root.leftchild,k-1,visit,res);

if(root.rightchild != null)

dfs(root.rightchild,k-1,visit,res);

node p = par.get(root);

if(p != null)

dfs(p,k-1,visit,res);

}public static vectordistancek(node root, node target, int k)

public static void main(string args)

}

二叉樹中所有距離為k的結點

一 問題解釋 給定乙個二叉樹 具有根結點root 乙個目標結點target,和乙個整數值k,返回到目標結點target距離為k的所有結點的值的列表。答案可以以任何順序返回。輸入 root 3,5,1,6,2,0,8,null,null,7,4 target 5,k 2 輸出 7,4,1 所求結點為與...

863 二叉樹中所有距離為 K 的結點

給定乙個二叉樹 具有根結點 root 乙個目標結點 target 和乙個整數值 k 返回到目標結點 target 距離為 k 的所有結點的值的列表。答案可以以任何順序返回。示例 1 輸入 root 3,5,1,6,2,0,8,null,null,7,4 target 5,k 2 輸出 7,4,1 解...

二叉樹中所有距離為K的節點(DFS BFS)

為找到與節點距離為k的節點,需解決節點回溯到其父節點的問題,因此需知道每個節點的父節點,使用雜湊表進行儲存,通過dfs建立此雜湊表 將target節點push到佇列中,進行三個方向的bfs 左孩子 右孩子 父節點 為防止重複訪問節點,需使用set儲存已訪問過的節點 definition for a ...