二叉搜索树与双向链表
来源:互联网 发布:淘宝玩乐收藏类目 编辑:程序博客网 时间:2024/06/05 07:40
题目
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
思路
中序非递归遍历二叉搜索树,每次记录当前遍历出来的节点的pre节点,把上个节点的right指针指向它,当前节点的left指针指向上一个节点,然后把当前节点更新成pre节点,因为二叉搜索树进行中序遍历是排序的,所以最后形成的链表就是排序的,注意先处理一下第一个节点。
参考代码
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: TreeNode* Convert(TreeNode* pRootOfTree) { if (!pRootOfTree) return nullptr; stack<TreeNode*> st; TreeNode* root, *p = pRootOfTree, *pre; bool first = true; while (p || !st.empty()) { if (p) { while (p) { st.push(p); p = p->left; } } TreeNode* top = st.top(); st.pop(); if (first) { root = top; pre = top; first = false; } else { pre->right = top; top->left = pre; pre = top; } p = top->right; } return root; }};
阅读全文
0 0
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 介绍几个工具
- 图片资源加密,Lua文件加密
- JZOJ 5305. 【NOIP2017提高A组模拟8.18】C
- CodeForces 840E. In a Trap
- Java遇见HTML——JSP篇之JSP基础语法
- 二叉搜索树与双向链表
- 打怪升级
- 由前序遍历和中序遍历重建二叉树
- Java 自 定 义 对 象 实 现 去 重
- CDN系统总结笔记
- 关于myeclipse中功能的解释
- Cococs2d-x通过TexturePacker加密图片资源(Cocos2d-x方式)
- OCLint的部分规则(Size 部分)
- OPCServer连接ModBus控制器环境配置