zoukankan      html  css  js  c++  java
  • Leetcode笔记之199二叉树的右视图

    题目:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

    解题思路:首先想到的是深度遍历,但是想到要考虑顺序问题觉得比较麻烦。还是层序遍历最合适,直接输出每一层的最右边的值。用一个队列保存每一层的节点,完成一层就弹出一层,按层输出队头的值。

    C++实现代码如下:

    class Solution {
    public:
        vector<int> rightSideView(TreeNode* root) {
            vector<int> output = {};
            if(root == NULL)  return output;
            queue<TreeNode*> q;
            q.push(root);
            while(!q.empty())
            {
                int len = q.size();
                output.push_back(q.front() -> val);
                while(len > 0)
                {
                    TreeNode* p = q.front();
                    q.pop();
                    if (p -> right) q.push(p -> right);
                    if (p -> left) q.push(p -> left);
                    len--;
                }
            }
            return output;
        }
    };
  • 相关阅读:
    Flask-上传文件和访问上传的文件
    苹果审核加急信
    iTunes Connect 协议更新
    iOS 关于Xcode上的Other linker flags
    cocoaPods
    iOS 支付宝的集成与遇到的问题
    iOS中app在iTunes中更新版本流程
    iOS集成支付宝问题
    iOS 获取键盘下落速度
    iosMD5加密和base64加密
  • 原文地址:https://www.cnblogs.com/hujinhui/p/12426979.html
Copyright © 2011-2022 走看看