题解 | #二叉搜索树与双向链表#

二叉搜索树与双向链表

http://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5

整体思路是中序遍历。重构一个双向链表。双向链表需要一个临时变量头节点,和当前节点。用这两个变量构建一个双向链表。

整体结构:

	TreeNode head = null; //头部节点
    TreeNode cur = null; //当前节点
    public TreeNode Convert(TreeNode pRootOfTree) {
        //终止条件
        if (pRootOfTree == null ) {
            return null;
        }
        Convert(pRootOfTree.left);
        
        //todo 遍历到这个节点时,处理真正的逻辑,干点什么。
        
        Convert(pRootOfTree.right);
        return head;
    }

给头节点和当前节点赋值:

Convert(pRootOfTree.left);
//当cur为空时,表示第一次走到这个位置,到了中序遍历的第一个节点,也就是头节点位置
if(cur == null){
	cur = pRootOfTree;
    head = pRootOfTree;
}else{  //其他一般情况
    cur.left = pRootNode ;//往上指向前驱节点
    pRootNode.right = cur ; //后继节点
    cur = pRootNode ; //临时变量后移
}
Convert(pRootOfTree.right);
全部评论

相关推荐

牛客977679609号:感觉你会的东西还挺多的但简历一般都不这样写,建议只写一页,教育经历只留学校,导师单位啥的全去了,作品展示和自我评价都去了,科研成果写在所获荣誉里,项目保留,浓缩成一页。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务