您的位置:首页 > Web前端

剑指offer 二叉搜索树与双向链表

2018-03-31 15:18 253 查看
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

其实两个递归是一样的,只是返回的节点不一样,一个是头,一个是尾,为了清晰把它分开了

public TreeNode Convert(TreeNode pRootOfTree){

if(pRootOfTree == null) return null;
return rightConvert(pRootOfTree, null);

}
public TreeNode leftConvert(TreeNode pRootOfTree,TreeNode preNode) {
if(pRootOfTree == null) return null;

pRootOfTree.left = leftConvert(pRootOfTree.left,pRootOfTree);
pRootOfTree.right = rightConvert(pRootOfTree.right,pRootOfTree);

while (pRootOfTree.right != null) pRootOfTree = pRootOfTree.right;
pRootOfTree.right = preNode;
return pRootOfTree;

}

public TreeNode rightConvert(TreeNode pRootOfTree,TreeNode preNode) {
if(pRootOfTree == null) return null;

pRootOfTree.left = leftConvert(pRootOfTree.left,pRootOfTree);
pRootOfTree.right = rightConvert(pRootOfTree.right,pRootOfTree);

while (pRootOfTree.left != null) pRootOfTree = pRootOfTree.left;
pRootOfTree.left = preNode;
return pRootOfTree;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: