二叉树镜像问题

对一个二叉树进行镜像翻转,这个问题可以归结为二叉树左右节点互换问题。


我们只需要简单的通过考虑假设节点只有父节点、左孩子和右孩子的时候问题,接下来通过递归的方式就可以解决这个问题。

代码如下:

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
public:
    void Mirror(TreeNode *pRoot) {
        if(pRoot != NULL){
            TreeNode* temp;
            temp = pRoot->left;
            pRoot->left = pRoot->right;
            pRoot->right = temp;
            if(pRoot->left != NULL){
                Mirror(pRoot->left);
            }
            if(pRoot->right != NULL){
                Mirror(pRoot->right);
            }
        }
    }
};

最后,可以考虑通过后序遍历的方式访问节点,然后重建这个二叉树来解决问题。

猜你喜欢

转载自blog.csdn.net/u011687724/article/details/78324948
今日推荐