/** * 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(NULL == root) return NULL; queue<TreeNode*> que; que.push(root); while(!que.empty()){ TreeNode* pChild = que.front(); que.pop(); TreeNode* pNode = pChild->left; pChild->left = pChild->right; pChild->right = pNode; if(pChild->left) que.push(pChild->left); if(pChild->right) que.push(pChild->right); } return root; } };
3、总结
只要掌握了DFS和BFS的思想,其它关于二叉树的算法基本上都是类似的,必要的时候通过画图来让自己感性认识一下也是极好的。
关于Leetcode上的题目代码:
------------------------------------------分割线------------------------------------------
具体下载目录在 /2015年资料/8月/23日/关于Leetcode上二叉树的算法总结/
------------------------------------------分割线------------------------------------------