二叉树与双向链表_26
2023-04-18 16:10:33 时间
思路:
- 明确Convert函数的功能。 输入:输入一个二叉搜索树的根节点。 过程:将其转化为一个有序的双向链表。 输出:返回该链表的头节点。
- 明确成员变量pLast的功能。 pLast用于记录当前链表的末尾节点。
- 明确递归过程。 递归的过程就相当于按照中序遍历,将整个树分解成了无数的小树,然后将他们分别转化成了一小段一小段的双向链表。再利用pLast记录总的链表的末尾,然后将这些小段链表一个接一个地加到末尾。
/**
* 已排链表的最后一个结点
*/
private TreeNode lastNode=null;
public TreeNode Convert(TreeNode pRootOfTree) {
if (pRootOfTree==null){
return null;
}
//获取其左子树双向链表的头结点
TreeNode head = Convert(pRootOfTree.left);
// 如果左子树为空,那么根节点root为此时双向链表的头节点
if (head==null){
head=pRootOfTree;
}
//连接当前结点和之前的链表
pRootOfTree.left=lastNode;
if (lastNode!=null) {
lastNode.right=pRootOfTree;
}
//更新最后一个结点
lastNode=pRootOfTree;
//安排右节点
Convert(pRootOfTree.right);
return head;
}
相关文章
- LeetCode 1221. 分割平衡字符串
- 消息称戴尔考虑出售云计算业务Boomi
- LeetCode 1832. 判断句子是否为全字母句
- LeetCode 1773. 统计匹配检索规则的物品数量
- 区块链,不是元宇宙的全部
- LeetCode 1614. 括号的最大嵌套深度
- 面向初学者的Kubernetes基础知识:体系结构和组件
- LeetCode 1844. 将所有数字用字符替换
- 企业云战略加速,7条攻略助你从“上云”到“驭云”
- 流量见顶,何为开启新家装大门的钥匙?流量见顶,何为开启新家装大门的钥匙?
- 中国电信的量子加密和量子速读、量子能量棒到底有啥差别?
- 为什么以及何时使用Windows Virtual Desktop
- LeetCode 1869. 哪种连续子字符串更长
- 国外运营商正在用5G取代有线宽带 国内会这样做吗?
- LeetCode 1812. 判断国际象棋棋盘中一个格子的颜色
- 云原生技术:云计算管理平台OpenStack与K8S
- 社区团购的洗牌与终局
- LeetCode 1370. 上升下降字符串
- 云网融合市场前景广阔运营商和企业应携手共进
- LeetCode 1436. 旅行终点站