zoukankan      html  css  js  c++  java
  • 剑指offer--二叉搜索树与双向链表

    /**
     * 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。
     * 要求不能创建任何新的结点,只能调整树中结点指针的指向。
     */
    package javabasic.nowcoder;
    
    /*
     * 采用中序遍历
    修改中序遍历,在其中加入一个前驱结点
    遍历左子树
    当前结点指向左指针指向前驱结点
    前驱结点右指针指向当前结点
    前驱 = 当前
    遍历右子树
     */
    public class Main31 {
    
    	//双向链表的左边头结点和右边头结点
    	TreeNode head = null;
    	TreeNode realHead = null;
    	public TreeNode Convert(TreeNode pRootOfTree) {
    		ConvertSub(pRootOfTree);
    		return realHead;
        }
    
    	private void ConvertSub(TreeNode pRootOfTree) {
    		//递归调用叶子节点的左右节点返回null
    		if(pRootOfTree==null)
    			return ;
    		//第一次运行时,它会使最左边叶子节点为链表第一个节点
    		ConvertSub(pRootOfTree.left);
    		if(head == null) {
    			head = pRootOfTree;
    			realHead = pRootOfTree;
    		}else {
    			//把根节点插入到双向链表的头结点,head向后移动
    			head.right = pRootOfTree;
    			pRootOfTree.left = head;
    			head = pRootOfTree;
    		}
    		//把右叶子节点也插入到双向链表
    		ConvertSub(pRootOfTree.right);
    	}
    }
    

      

  • 相关阅读:
    ztz11的noip模拟赛T3:评分系统
    20181030NOIP模拟赛T3
    20181030NOIP模拟赛T2
    20181030noip模拟赛T1
    20181029NOIP模拟赛T3
    20181029NOIP模拟赛T2
    20181029noip模拟赛T1
    最优贸易(tarjan,spfa)
    [ZJOI2009]假期的宿舍(二分图匹配)
    上白泽慧音(tarjan,图的染色)
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/9055377.html
Copyright © 2011-2022 走看看