Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117338
  • 博文数量: 53
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 620
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-24 16:22
文章存档

2014年(53)

我的朋友

分类: C/C++

2014-12-06 17:21:01

Given a binary tree, flatten it to a linked list in-place.

这题直观的做法就是先序遍历,一个节点一个节点的塞到list里面,但是为了避免毁掉原本的链接,所以在递归中使用临时变量存储节点


  1. TreeNode * p=NULL;
  2. void f(TreeNode * root){
  3.     if(root==NULL)
  4.         return;
  5.     p->right=root;
  6.     p=p->right;
  7.     TreeNode * l=root->left;
  8.     TreeNode * r=root->right;
  9.     root->left=NULL;
  10.     f(l);
  11.     f(r);
  12. }
  13. void flatten(TreeNode *root) {
  14.     p=new TreeNode(0);
  15.     f(root);
  16. }


阅读(931) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~