LeetCode Invert Binary Tree(镜像)
2018-04-15 本文已影响0人
codingcyx
二叉树的镜像。
解法一(dfs recursive):
TreeNode* invertTree(TreeNode* root) {
if(!root) return NULL;
root -> left = invertTree(root -> left);
root -> right = invertTree(root -> right);
swap(root -> left, root -> right);
return root;
}
解法二(bfs queue):
TreeNode* invertTree(TreeNode* root) {
queue<TreeNode*> que;
if(root == NULL) return NULL;
que.push(root);
while(!que.empty()){
TreeNode* tmp = que.front();
que.pop();
swap(tmp -> left, tmp -> right);
if(tmp -> left)
que.push(tmp -> left);
if(tmp -> right)
que.push(tmp -> right);
}
return root;
}
注:解法二是层序遍历bfs,用队列维护需要处理的结点。也可以把队列换成栈,这样就是dfs,处理方法类似于bfs。区别只在于处理顺序。