//思路:
//二分搜索树有序:中序遍历
//难点在于不能创建任何新节点
private TreeNode pre = null; //指向当前节点的前一个节点
private TreeNode head = null; //指向头节点
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree==null){
return null;
}
inOrder(pRootOfTree);
return head;
}
// node 是当前节点
private void inOrder(TreeNode node){
if(node==null){
return;
}
inOrder(node.left);
node.left = pre;
if(pre!=null){ //说明 root 不是头结点
pre.right=node;
}
pre=node;
if(head==null){
head = node;
}
inOrder(node.right);
}
https://www.mianshi.online,https://www.i9code.cn
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。