114. Flatten Binary Tree to Linked List\538. Convert BST to Greater Tree
来源:互联网 发布:95淘宝小嫩模全集在线 编辑:程序博客网 时间:2024/06/07 14:45
- Flatten Binary Tree to Linked List
- DESCRIPTION
- IMPLEMENTATION
- Convert BST to Greater Tree
- DESCRIPTION
- IMPLEMENTATION
114. Flatten Binary Tree to Linked List
DESCRIPTION
Given a binary tree, flatten it to a linked list in-place.
For example,
Given :
1 / \ 2 5 / \ \ 3 4 6
The flattened tree should look like:
1 \ 2 \ 3 \ 4 \ 5 \ 6
This problem changes the tree into a linked list.
My algorithm is below: I use iterative method to do pre-order and store the right node to the stack and point the current node to left-node, set left node to NULL. Do this operation until the stack is empty.
IMPLEMENTATION
The code is below:
/** * 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: void flatten(TreeNode* root) { if(!root) return; stack<TreeNode*> que; TreeNode* cur = root; if(root->right) que.push(root->right); if(root->left) que.push(root->left); while(!que.empty()) { TreeNode* left = que.top(); que.pop(); cur->left = NULL; cur->right = left; if(left->right) que.push(left->right); if(left->left) que.push(left->left); cur = cur->right; } }};
538. Convert BST to Greater Tree
DESCRIPTION
Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys greater than the original key in BST.
Example:
Input: The root of a Binary Search Tree like this:
5 / \ 2 13
Output: The root of a Greater Tree like this:
18 / \ 20 13
This problem is a pre-order problem, from this we can see that the node is the accumulated by its own value and its right sub-tree accumulated value.
So here I change the order of tree with the right node first then its left tree node, and a global value stores the last node value to assign to the newer node.
IMPLEMENTATION
The code shows below:
/** * 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: int last = 0; bool hasValue = false; void findRightSum(TreeNode* root) { if(!root) return; if(root->right) findRightSum(root->right); root->val += last; last = root->val; if(root->left) findRightSum(root->left); } TreeNode* convertBST(TreeNode* root) { if(!root) return root; findRightSum(root); return root; }};
- 114. Flatten Binary Tree to Linked List\538. Convert BST to Greater Tree
- 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
- 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
- day43_jquery之js
- 关于股票的想法
- 职业学校学生实习管理规定-…
- 基础模型
- 好友二级列表(强化版)
- 114. Flatten Binary Tree to Linked List\538. Convert BST to Greater Tree
- 自制通道交易法.mq4
- TDX端口关闭,上网设置
- Xcode经常用到的一些快捷键
- 数组公式的用法,实例链接
- Linux C程序实现查看文件夹大小
- Public Sub 考勤() 生成DLL
- [求助]实时错误91,对象变量…
- Ubuntu 下安装 Python 虚拟环境