- 使用队列进行层序遍历,对每一层的节点进行交换
class Solution { public: TreeNode* invertTree(TreeNode* root) { if(root == nullptr)//判空 { return root; } queueque;//使用层序遍历,故使用队列 que.push(root);//先压入根节点 while(!que.empty()) { int queSize = que.size();//获取每一层的节点数目 for(int i = 0; i < queSize; ++i) { if(!que.empty()) { swap(que.front()->left, que.front()->right);//交换该节点的子节点 if(que.front()->left)//压入左子节点 { que.push(que.front()->left); } if(que.front()->right)//压入右子节点 { que.push(que.front()->right); } que.pop();//pop该节点,确保队列里只存放每一层的节点 } } } return root; } };
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)