遞迴演算法主要有三個步驟:
找到遞迴出口,整個遞迴的終止條件
返回上一級的內容
本級遞迴該做什麼
1、遍歷二叉樹,遞迴與非遞迴實現
遞迴實現:
function
deepsearch1
(root, target)
console.
log(
deepsearch1
(a,'a'))
// true
非遞迴實現:
function
deepsearch2
(root, target)
return
false
}console.
log(
deepsearch2
(a,'c'))
//true
2、陣列扁平化,物件扁平化?
陣列扁平化:
var arr =[1
,[2,
3],[
2,3,
[4,5
,6]]
];var newarr =
;function
fn(arr)
else})
return newarr
}console.
log(
fn(arr)
)//[1, 2, 3, 2, 3, 4, 5, 6]
物件扁平化:
var newobj =
function
fn(obj)
else
}return newobj
}console.
log(
fn(obj)
)
3、鍊錶反轉
function
turnback
(root)
else
}console.
log(
turnback
(a))
扁平化多級雙向鍊錶
題目描述 多級雙向鍊錶中,除了指向下乙個節點和前乙個節點指標之外,它還有乙個子鍊錶指標,可能指向單獨的雙向鍊錶。這些子列表也可能會有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。給你位於列表第一級的頭節點,請你扁平化列表,使所有結點出現在單級雙鏈表中。示例 1 輸入 head ...
扁平化多級雙向鍊錶
您將獲得乙個雙向鍊錶,除了下乙個和前乙個指標之外,它還有乙個子指標,可能指向單獨的雙向鍊錶。這些子列表可能有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。扁平化列表,使所有結點出現在單級雙鏈表中。您將獲得列表第一級的頭部。示例 輸入 1 2 3 4 5 6 null 7 8 9...
430 扁平化多級雙向鍊錶
題目 多級雙向鍊錶中,除了指向下乙個節點和前乙個節點指標之外,它還有乙個子鍊錶指標,可能指向單獨的雙向鍊錶。這些子列表也可能會有乙個或多個自己的子項,依此類推,生成多級資料結構,如下面的示例所示。給你位於列表第一級的頭節點,請你扁平化列表,使所有結點出現在單級雙鏈表中。示例 1 輸入 head 1,...