二叉搜索树与双向链表
二叉搜索树与双向链表
http://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5
/*
* 链表中最后一个节点的指针
* 当使用递归,且需要用具体变量保存每次递归的结果时,
* 不能把此变量作为递归函数的形参
* 因为每次递归返回时此变量都会变为之前的值
* 所以这里的变量定义在了方法的外面且不作为inOrderConvert()的形式参数
* */
TreeNode lastNodeList = null;
/**
* @Author: ZwZ
* @Description: 在中序遍历过程中对指针进行改变
* @Param: [pRootOfTree]
* @return: jianZhi.TreeNode
* @Date: 2020/1/27-16:19
*/
public TreeNode Convert1(TreeNode pRootOfTree) {
inOrderConvert(pRootOfTree);
//寻找链表头节点
while (lastNodeList != null && lastNodeList.left != null)
lastNodeList = lastNodeList.left;
return lastNodeList;
}
/**
* @Author: ZwZ
* @Description: 序遍历并改变指针
* @Param: [root]
* @return: void
* @Date: 2020/1/27-16:22
*/
public void inOrderConvert(TreeNode root) {
if (root == null)
return;
if (root != null) {
inOrderConvert(root.left);
root.left = lastNodeList;
if (lastNodeList != null)
lastNodeList.right = root;
lastNodeList = root;
inOrderConvert(root.right);
}
}}
腾讯成长空间 4137人发布
