199.二叉树的右视图(C++逐句解析)

class Solution{
    public:
        vectorrightSideView(TreeNode* root) {      //方法的类型是vector,需要的参数是节点类型
            queue que;                       //创建队列,队列里存的是节点类型
            if(root!=NULL) que.push(root);              //如果根节点不是空的,把根节点放入队列
            vector result;                         //创建int类型容器,存放输出结果
            while (!=que.empty())                       //如果队列不是空的,最开始存放了root节点,除非没有root节点
            {
                /* code */
                int size=que.size();                    //获取队列的长度,这句放在这个位置,因为队列长度是不断变化的,size值再while中要一开始确定
                for(int i=0;ival);//获取最右侧的值,是解决这个问题的核心,在该队列的遍历中,如果遍历到了队列的尾部,也即是我需要找到的最右侧的节点,那我就需要储存这个节点对应的值
                    if(node->left)que.push(node->left);        //在每一次for循环中,会弹出一个上层节点,加入0/1/2个下层节点,而且这种变化是逐次增加的
                    if(node->right)que.push(node->right);      //当此层for循环结束时,上一层的节点都已经弹出了,且下一层的节点都已进入队列了 
            }
            
            return result;



        }
}

你可能感兴趣的:(c++,算法,leetcode)