varpreorderTraversal=function(root){let result =[]varpreOrderTraverseNode=(node)=>{if(node){// 先根節點
result.push(node.val)// 然後遍歷左子樹preOrderTraverseNode(node.left)// 再遍歷右子樹preOrderTraverseNode(node.right)}}preOrderTraverseNode(root)return result
};
這個遞歸模式是個套路寫法,和深度優先一樣:
let num=0//記錄深度,上面那個題目不需要記錄深度。functiondepth(node){
num++if(node.left){
dosomething...depth(node.left)}if(node.right){
dosomething...depth(node.right)}
num--if(num===0){//出口,也可用來返回結果之類,上面那題結果在外面收集,不記錄深度,有判斷條件的遞歸不會無限遞歸。return}}