LeetCode 1602. 找到二叉树中最近的右侧节点(BFS)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1602. 找到二叉树中最近的右侧节点(BFS)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給定一棵二叉樹的根節點 root 和樹中的一個節點 u ,返回與 u 所在層中距離最近的右側節點,當 u 是所在層中最右側的節點,返回 null 。
示例 1:
示例 2:
輸入:root = [3,null,4,2], u = 2 輸出:null 解釋:2 的右側沒有節點。示例 3: 輸入:root = [1], u = 1 輸出:null示例 4: 輸入:root = [3,4,2,null,null,null,1], u = 4 輸出:2提示: 樹中節點個數的范圍是 [1, 105] 。 1 <= Node.val <= 105 樹中所有節點的值是唯一的。 u 是以 root 為根的二叉樹的一個節點。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/find-nearest-right-node-in-binary-tree
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution { public:TreeNode* findNearestRightNode(TreeNode* root, TreeNode* u) {queue<TreeNode*> q; q.push(root);TreeNode* cur;while(!q.empty()){int size = q.size();while(size--){cur = q.front();q.pop();if(size && cur==u)return q.front();else if(!size && cur==u)return NULL;if(cur->left)q.push(cur->left);if(cur->right)q.push(cur->right);}}return NULL;} };156 ms 84.5 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 1602. 找到二叉树中最近的右侧节点(BFS)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用回溯法解决1-9之间添加+或-或使得
- 下一篇: LeetCode 2140. 解决智力问