【题解】199.二叉树的右视图(二叉树、bfs、dfs)

https://leetcode.cn/problems/binary-tree-right-side-view/description/?envType=study-plan-v2&envId=top-100-liked
在这里插入图片描述

  • 方法1(广度优先遍历)
class Solution {
    
    
public:
    // 函数返回二叉树的右视图
    vector<int> rightSideView(TreeNode* root) {
    
    
        vector<int> v;  // 用于存储每层最右边的节点值
        if (root == nullptr) {
    
    
            return v;  // 如果根节点为空,返回空结果
        }

        queue<TreeNode*> q;  // 使用队列进行广度优先搜索(BFS)
        q.push(root);  // 将根节点放入队列
        
        while (!q.empty()) {
    
      // 当队列不为空时,继续处理
            int size = q.size();  // 当前层的节点数
            for (int i = 0; i < size; ++i) {
    
      // 遍历当前层的所有节点
                TreeNode* node = q.front();  // 取出队列前端的节点
                q.pop();  // 从队列中移除这个节点
                
                // 将当前节点的左子节点加入队列(如果存在)
                if (node->left != nullptr) {
    
    
                    q.push(node->left);
                }
                
                // 将当前节点的右子节点加入队列(如果存在)
                if (node->right != nullptr) {
    
    
                    q.push(node->right);
                }
                
                // 如果是当前层的最后一个节点,加入结果向量
                if (i == size - 1) {
    
    
                    v.push_back(node->val);
                }
            }
        }
        
        return v;  // 返回包含右视图的结果
    }
};
  • 方法2(深度优先遍历)
class Solution {
    
    
public:
    vector<int> v;  // 用于存储每层最右边的节点值

    // 主函数,返回二叉树的右视图
    vector<int> rightSideView(TreeNode* root) {
    
    
        dfs(root, 0);  // 从根节点开始深度优先搜索,深度从0开始
        return v;  // 返回包含右视图的结果
    }

    // 深度优先搜索(DFS)函数
    void dfs(TreeNode* root, int depth) {
    
    
        if (root == nullptr) return;  // 如果当前节点为空,直接返回

        // 如果当前深度的节点还未被访问,说明这是该层第一个节点
        if (v.size() == depth) {
    
      
            v.push_back(root->val);  // 记录当前层的第一个节点(右视图中最右边的节点)
        }
        
        // 递归遍历右子树
        dfs(root->right, depth + 1);  
        
        // 递归遍历左子树
        dfs(root->left, depth + 1);  
    }
};

猜你喜欢

转载自blog.csdn.net/Colorful___/article/details/141598388