求一棵树的镜像

来源:互联网 发布:dnf先锋者技能数据 编辑:程序博客网 时间:2024/04/30 07:55

给定一棵二叉树,返回该二叉树的镜像,即对于每一棵子树,都把其左右子树交换。


struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int v):val(v),left(NULL),right(NULL){}};typedef TreeNode Node;Node* build(Node* root){if(root==NULL)return NULL;Node* node = new Node(root->val);node->left = build(root->right);node->right = build(root->left);return node;}Node* stack1[1000];Node* stack2[1000];int top=-1;Node* build_it(Node* root){if(root==NULL)return NULL;Node* root2 = new Node(root->val);stack1[++top] = root;stack2[top] = root2;while(top>=0){Node* node1 = stack1[top];Node* node2 = stack2[top--];if(node1->left!=NULL){node2->right = new Node(node1->left->val);stack1[++top] = node1->left;stack2[top] = node2->right;}if(node1->right!=NULL){node2->left = new Node(node1->right->val);stack1[++top] = node1->right;stack2[top] = node2->left;}}return root2;}

build函数是用递归实现的,比较直观,而build_it是用非递归实现的

0 0
原创粉丝点击