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}}