private TreeNode pre=null; //始终指向当前节点的前一个节点(因为是双向链表)
private TreeNode head=null; //链表的头结点
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree==null){
return null;
}
if(pRootOfTree.left==null && pRootOfTree.right==null){
return pRootOfTree;
}
inOrder(pRootOfTree);
return head;
}
//对以 node 为根节点的搜索二叉树进行遍历
private void inOrder(TreeNode node){
if(node==null){
return;
}
inOrder(node.left);
//构建双向链表的过程
node.left=pre;
if(pre!=null){
pre.right=node;
}
pre=node; //TODO: pre 指向 node
if(head==null){
head=node;
}
inOrder(node.right);
}
https://www.mianshi.online,https://www.i9code.cn
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。