1.前中后序遍历
主要是根据父节点的位置来定的
前序:中左右
中序:左中右
后序:左右中
终止条件:root=null
以前序为例
var preorderTraversal = function(root) {
let res=[]
const dfs = function(root){
if(root==null) return;
//递归左节点
res.push(root.val)//中
dfs(root.left)//左
dfs(root.right)//右
}
dfs(root)
return res;
};
2.层序遍历:可以作为一个模板
var levelOrder = function(root) { //用队列解决
let res = [], queue = []
queue.push(root)
if (root==null) return res
while(queue.length!==0){
let length=queue.length//当前的层级长度
let curlevel=[]
for(let i=0;i<length;i++){//
let node=queue.shift()//
curlevel.push(node.val)
//找到下一层级的节点
node.left&&queue.push(node.left)
node.right&&queue.push(node.right)
}
res.push(curlevel)
}
return res
};
3.二叉树和n叉树
二叉树有左右儿子,n叉树的孩子遍历