解题思路: 要对一棵二叉树进行反转操作,则必须对其遍历,考虑使用先序遍历的方法,则先遍历根节点,接着对其左右孩子节点进行反转,再递归对以其左右孩子节点为根节点的子树进行反转操作,最终完成整棵二叉树的反转。
需注意的点:所传根节点可能为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; }};
新闻热点
疑难解答