首页 > 代码库 > 逆转二叉树
逆转二叉树
逆转二叉树 代码练手
#include <iostream> #include <memory> using namespace std; struct TreeNode{ int val; shared_ptr<TreeNode> left; shared_ptr<TreeNode> right; }; void PrintTree(shared_ptr<TreeNode> root) { if (!root) return; cout << root->val << " "; PrintTree(root->left); PrintTree(root->right); return; } shared_ptr<TreeNode> CreateNode(int i) { shared_ptr<TreeNode> p(new TreeNode()); p->val = i; return p; } void InsertNode(shared_ptr<TreeNode>& root,int i) { if (!root) { root = CreateNode(i); return; } if (i > root->val) { InsertNode(root->right, i); } else if (i < root->val) { InsertNode(root->left, i); } else if (i == root->val) return; return; } shared_ptr<TreeNode> InvertTree(shared_ptr<TreeNode>& root ) { if (!root) return root; shared_ptr<TreeNode> tmp = root->left; root->left = InvertTree(root->right); root->right = InvertTree(tmp); return root; } int main() { shared_ptr<TreeNode> root = CreateNode(4); InsertNode(root, 2); InsertNode(root, 7); InsertNode(root, 1); InsertNode(root, 3); InsertNode(root, 6); InsertNode(root, 9); PrintTree(root); InvertTree(root); cout << endl; PrintTree(root); return 0; }
输出:
4 2 1 3 7 6 9
4 7 9 6 2 3 1
逆转二叉树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。