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

二叉搜索树与双向链表

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);
全部评论

相关推荐

只有一个苍穹外卖外加正在看黑马点评,可以找小厂实习吗,还有我的简历有什么大问题吗
Java抽象小篮子:感觉有点熟悉,问题1是学历,2是没实习经历,3是专业技能写得太少太少了(怎么写可以看我置顶帖),4是仅这一个项目找实习不够看。拷打完毕,简历怎么写可以看我置顶帖子
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务