102-层序遍历 1.dfs法
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrder = function(root) {
if(!root || root == 0) return [];
let res = [];
// 先从层级 0 开始 root是根节点的值
dfs(root,0);
function dfs(currentNode,level){
// 1.如果说 这一层有数 第一步 先加上[] 然后赋值
if(currentNode !== null){
if(!res[level]) res.push([]);
// 把currentNode的值加给res[level]
res[level].push(currentNode.val);
}
// 如果currentNode左边的值不等于空 说明有下一个节点 level++
if(currentNode.left !== null){
//这里不能让level在外面自加 因为会改变level的真正的值 因为level不是只给一个点用 而是大家共享的
dfs(currentNode.left,level+1)
}
// 如果currentNode右边的值不等于空 说明有下一个节点 leve
if(currentNode.right !== null){
// 把level值提升后 再对这个节点进行查找
dfs(currentNode.right, level+1)
}
}
return res;
};
2.dps法( dps好像特别适合二叉树 但我不是很懂代码要怎么写)
|