首页 > 学院 > 开发设计 > 正文

LeetCode:反转二叉树

2019-11-06 06:59:57
字体:
来源:转载
供稿:网友

解题思路: 要对一棵二叉树进行反转操作,则必须对其遍历,考虑使用先序遍历的方法,则先遍历根节点,接着对其左右孩子节点进行反转,再递归对以其左右孩子节点为根节点的子树进行反转操作,最终完成整棵二叉树的反转。

需注意的点:所传根节点可能为0,即改树为空树,则应该作特殊处理,否则当取其左右孩子的时候会出现空指针异常。

代码如下:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* invertTree(TreeNode* root) {        if(root == NULL){            return NULL;        }        TreeNode* temp = root->left;        root->left = root->right;        root->right = temp;        if(root->left){            invertTree(root->left);        }        if(root->right){            invertTree(root->right);        }                return root;    }};


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表