Android开发 ssl text sed merge datepicker devise laravel4 x86 matlab停止运行命令 cpm计算 mysql转字符串 chrome发送post请求 mser算法 oracle增加主键 wordpress本地建站 oracle行转列函数 python中assert python语言 python运算符优先级 python当前日期 java编译 java中的数据类型 java怎么编程 matlab2016a安装教程 脚本软件 轮播图js代码 丁丁下载 网络文件服务器 卡巴斯基离线升级包 编程语言实现模式 博途v14安装教程 arm体系结构与编程 ps怎么画漫画 跑马灯动态壁纸 qq悄悄话怎么知道对方是谁 python编辑器 dh浩劫天赋 ae添加关键帧 linux解压文件
当前位置: 首页 > 学习教程  > 编程语言

LeetCode第102题解析

2020/7/24 9:29:06 文章标签:

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)

示例:

二叉树:[3,9,20,null,null,15,7],

   3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果:

[
  [3],
  [9,20],
  [15,7]
]

解法一:利用迭代的方式,即BFS

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> res;
        queue<TreeNode*> level_node;
        if(root) level_node.push(root);
        while(!level_node.empty()) {
            vector<int> level_node_val;
            int length = level_node.size();
            while(length--) {
                TreeNode* tmp = level_node.front();
                level_node.pop();
                level_node_val.push_back(tmp->val);
                if(tmp->left) level_node.push(tmp->left);
                if(tmp->right) level_node.push(tmp->right);
            }
            res.push_back(level_node_val);
        }
        return res;
    }
};

解法二:利用递归的方式,即DFS,这个判断不太懂哦!

class Solution {
public:
    vector<vector<int>> res;
    vector<vector<int>> levelOrder(TreeNode* root) {
        level_Traversal(root, 0);
        return res;
    }

    void level_Traversal(TreeNode* root, int level) {
        if(root) {
            //这个判断不太懂
            if(res.size() == level) res.resize(level + 1);
            res[level].push_back(root->val);
            level_Traversal(root->left, level + 1);
            level_Traversal(root->right, level + 1);
        }
    }
};

 

 


本文链接: http://www.dtmao.cc/news_show_50096.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?