博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode::Flatten Binary Tree to Linked List
阅读量:5129 次
发布时间:2019-06-13

本文共 1332 字,大约阅读时间需要 4 分钟。

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 分析: 这道题主要要将二叉树拉平。其实如果不要求in-place算法的话,因为这就是一个深搜遍历,pre-ordered traversal. 所以弄个栈存储一下,等下建 很简单就搞定了。但是因为是要求in-place,则需要在递归的过程中,改变树的结构: 基本算法是对任一子树,其左右子树都已经维护好了,即左右子树都是 拉成只有右子树的链了,然后拿到左子树的最右叶子,然后将右子树连接到其右孩子上,这样就维护好了这一子树。
1 /** 2  * Definition for binary tree 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     void flatten(TreeNode *root) {13         if(root==NULL) return;14         if(root->left == NULL && root->right == NULL)15             return;16             17         flatten(root->left);18         flatten(root->right);19         TreeNode *nod;20         if(root->left!=NULL)21         {22             nod = root->left;23             while(nod->right!=NULL)24                 nod = nod->right;25             nod->right = root->right;26             root->right = root->left;27             root->left =NULL;28         }29         return;30     }31 };

 

 

转载于:https://www.cnblogs.com/soyscut/p/3775348.html

你可能感兴趣的文章
如何获得当前类的泛型
查看>>
C++数据间隔
查看>>
SharePoint创建Alternate Access Mapping (AAM)备用訪问映射
查看>>
程序中使用cocostudio移植到android手机须要的若干配置过程
查看>>
Java报异常时getMessage()方法返回null
查看>>
【SSH网上商城项目实战09】添加和更新商品类别功能的实现
查看>>
EL表达式
查看>>
日历插件【好用 可扩展】
查看>>
HTTP详解
查看>>
Surface与SurfaceView、SurfaceHolder
查看>>
linux screen 命令详解(未验证+研究)
查看>>
日志分析
查看>>
007grafana监控时间戳转换
查看>>
【2003-4】【分数计算】
查看>>
【2011-5】【最大乘积】
查看>>
一般计算 【2007】三3 C++版
查看>>
git使用总结
查看>>
2016-12-26 spoj STARSBC 欧拉函数水 spoj KAOS 字典树
查看>>
GoLang安装
查看>>
Spring 4 官方文档学习(十一)Web MVC 框架之HTTP caching support
查看>>