114. Flatten Binary Tree to Linked List
2016-11-12 10:15
197 查看
第一种方案:先序遍历整棵树,然后从根节点开始一直往右子树延伸。
class Solution { public: void flatten(TreeNode* root) { vector<int>pre; preorder(root,pre); TreeNode *pnode=root; TreeNode *pnode_pre=root; for(int i=0;i<pre.size();i++) { if(pnode) { pnode->val=pre[i]; pnode->left=NULL; } else { pnode=new TreeNode(pre[i]); pnode->right=NULL; pnode_pre->right=pnode; } pnode_pre=pnode; pnode=pnode->right; } } void preorder(TreeNode *root,vector<int>&pre) { if(!root) return; pre.push_back(root->val); preorder(root->left,pre); preorder(root->right,pre); } };
第二种方案:按照题意从根节点开始,如果当前节点有左孩子,就将它的左孩子添加到自己和右孩子之间,这里每次需要找到左孩子最右边的节点,连接到当前节点的右孩子。然后依次往右处理自己的右孩子,直到右孩子为空。
class Solution { public: void flatten(TreeNode* root) { if(root=NULL) return; while(root!=NULL) { if(root->left) { TreeNode *p=root->left; while(p->right) p=p->right; p->right=root->right; root->right=p; root->left=NULL; } root=root->right; } } };
相关文章推荐
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List(难)
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List LeetCode
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- 114. Flatten Binary Tree to Linked List
- (LeetCode) 114. Flatten Binary Tree to Linked List
- [面试真题] LeetCode:Flatten Binary Tree to Linked List
- 【leetcode】Flatten Binary Tree to Linked List
- Flatten Binary Tree to Linked list
- [LeetCode]Flatten Binary Tree to Linked List
- Flatten Binary Tree to Linked List