将二叉树拆成链表
来源:互联网 发布:电子设计软件有哪些 编辑:程序博客网 时间:2024/05/31 13:15
问题描述:
将一颗二叉树按照前序遍历拆解成为一个假链表。所谓的假链表
将一棵二叉树按照前序遍历拆解成为一个假链表
。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。
实现思路:
将root的左子树付给右子树,再将左子树付给右子树,同时使root的左子树为空。
代码:
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: a TreeNode, the root of the binary tree
* @return: nothing
*/
void flatten(TreeNode *root) {
// write your code here
if (root == NULL) return;
while (root!=NULL) {
if (root->left!=NULL) {
TreeNode *p = root->left;
while (p->right!=NULL)
p = p->right;
p->right = root->right;
root->right = root->left;
root->left = NULL;
}
root = root->right;
}
}
};
感想:
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: a TreeNode, the root of the binary tree
* @return: nothing
*/
void flatten(TreeNode *root) {
// write your code here
if (root == NULL) return;
while (root!=NULL) {
if (root->left!=NULL) {
TreeNode *p = root->left;
while (p->right!=NULL)
p = p->right;
p->right = root->right;
root->right = root->left;
root->left = NULL;
}
root = root->right;
}
}
};
感想:
从根节点开始,把左子树付给右子树,作为右子树的右子树。依次往下进行。
0 0
- 将二叉树拆成链表
- LintCode: 将二叉树拆成链表
- 将二叉树拆成链表
- lintcode,将二叉树拆成链表
- LintCode 将二叉树拆成链表
- 将二叉树拆成链表-LintCode
- 将二叉树拆成链表
- 将二叉树拆成链表
- lintcode 将二叉树拆成链表
- 将二叉树拆成链表
- 将二叉树拆成链表
- lintcode将二叉树拆成链表
- 将二叉树拆成链表
- 将二叉树拆成链表
- 将二叉树拆成链表
- 将二叉树拆成链表
- 将二叉树拆成链表
- 将二叉树拆成链表
- 欢迎使用CSDN-markdown编辑器
- js实现单个div闪烁
- XDOJ-1113-Too Light(dp)
- 一文读懂CNN
- 内联函数
- 将二叉树拆成链表
- 安装Sublime Text 3插件的方法
- C# study1
- 读书笔记——面向对象的六大原则
- 初识常量和变量
- POJ3013
- hdoj1205 抽屉原理
- 网站搭建
- 洛谷 P3197 [HNOI2008]越狱