LeetCode---Flatten Binary Tree to Linked List
2015-11-02 19:43
477 查看
题目大意:给出一个二叉树,将其转化为单链表形式。
算法思想:
先序遍历二叉树,遇到节点将其放入链表中即可。
1.设置一个节点指针指向根节点。
2.将根节点入栈。
3.然后取栈顶元素,并出栈。将其孩子节点入栈(需先放入右孩子节点)。若当前节点不为根节点则将其加入链表,同时移动链表指针。重复此过程直至栈空。
代码如下:
算法思想:
先序遍历二叉树,遇到节点将其放入链表中即可。
1.设置一个节点指针指向根节点。
2.将根节点入栈。
3.然后取栈顶元素,并出栈。将其孩子节点入栈(需先放入右孩子节点)。若当前节点不为根节点则将其加入链表,同时移动链表指针。重复此过程直至栈空。
代码如下:
/** * 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==NULL) return ; stack<TreeNode*> S; TreeNode* cur=NULL,*p=NULL; p=root; S.push(root); while(!S.empty()){ cur=S.top(); S.pop(); if(cur->right!=NULL) S.push(cur->right); if(cur->left!=NULL) S.push(cur->left); if(cur!=root){ p->right=cur; p->left=NULL; p=p->right; } } } };
相关文章推荐
- 日常总结(十)windows的cmd窗口进入指定文件夹(即目录)和cmd默认窗口大小设置
- bzoj1618【Usaco2008 Nov】Buying Hay 购买干草
- hdu 1200 To and Fro
- 黑马程序员——OC类的初始化与点语法
- Android依赖注入类库 Butter Knife的使用
- svn 命令行下常用的几个命令
- 线程:sleep()、wait()、yield()和join()方法
- iOS 多线程
- Activity之间的数据传递
- SDWebImage源码解析之SDWebImageManager的注解
- bzoj1617【Usaco2008 Mar】River Crossing 渡河问题
- android 使用Intent传递对象 Serializable 或者 Parcelabel 《第一行代码》
- 布局的重复使用
- 客户端和服务端交互的三种方式
- Dev C++报告窗口不能自动弹出
- qt5.5.1在Cortex-a8上移植记录
- Qt5启动画面
- NLP Deep Learning
- java线程基础知识和小案例
- GPU编程学习