这个文章用于记录自己遇到的题目 -二叉树篇
1:二叉搜索树与双向链表
https://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5
```java
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree==null)
return null;
if(pRootOfTree.left==null&&pRootOfTree.right==null)
return pRootOfTree;
TreeNode lefthead = Convert(pRootOfTree.left);
TreeNode leftend = pRootOfTree.left;//这里可以leftend=lefthead,此时
//并非用二叉树搜索左子树中的最右支(最大节点)而是从左边链表的头结点搜索到尾结点
//也是(最大节点)
while(leftend!=null&&leftend.right!=null)
{
leftend=leftend.right;
}
if(leftend!=null)
{
leftend.right=pRootOfTree;
pRootOfTree.left=leftend;
}
TreeNode righthead = Convert(pRootOfTree.right);
if(righthead!=null)
{
righthead.left=pRootOfTree;
pRootOfTree.right=righthead;
}
if(lefthead==null)
return pRootOfTree;
else
return lefthead;
}
}