Invert Tree 发表于 2017-04-28 | 分类于 算法 Invert Tree题目描述: 给定一棵树的头结点,要求对树中的节点进行操作,即将左节点变为右节点;右节点变为左节点。 例子: 见LeetCode226. 解题思路: 主要的思路还是递归的想法:我们不断遍历树的节点,碰到空节点和叶节点返回;不然交换其左右节点,然后递归在左右子树上调用该函数。 代码如下:123456789101112131415161718192021222324252627/** * 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) { invert(root); return root; } void invert(TreeNode* &node){ if (!node) return; if (!node->left && !node->right) return; TreeNode* tmp = node->left; node->left = node->right; node->right = tmp; //改变左右子树 invert(node->left); invert(node->right); //递归调用 }};