本文主要是介绍2415.反转二叉树奇层数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目来源:
leetcode题目,网址:2415. 反转二叉树的奇数层 - 力扣(LeetCode)
解题思路:
广度优先遍历,遇到奇数层时,反转节点值即可。
解题代码:
/*** 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* reverseOddLevels(TreeNode* root) {int level=0;queue<TreeNode*> q;q.push(root);while(q.size()!=0){int size=q.size();queue<TreeNode*> thisLevel;stack<int> values;for(int i=0;i<size;i++){TreeNode* temp=q.front();thisLevel.push(temp);values.push(temp->val);q.pop();if(temp->left!=nullptr){q.push(temp->left);q.push(temp->right);}}if(level%2!=0){while(thisLevel.size()!=0){thisLevel.front()->val=values.top();thisLevel.pop();values.pop();}}level++; } return root;}
};
总结:
官方题解给出了深度优先和广度优先两种解法。
这篇关于2415.反转二叉树奇层数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!