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


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


    解题思路

    我们知道,二叉搜索树的中序遍历结果是有序的,因此我们第一个想到的就是使用中序遍历,在这个过程中对结点进行操作

    public class Solution {
        
        // 标记上一次入栈值
        private TreeNode preNode = null;
        private TreeNode head = null;
        
        public TreeNode Convert(TreeNode pRootOfTree) {
            if (pRootOfTree == null) {
                return null;
            }
            midShow(pRootOfTree);
            return head;
        }
        
        public void midShow(TreeNode pRootOfTree) {
            if(pRootOfTree.left != null) {
                midShow(pRootOfTree.left);
            }
            if(preNode == null) {
                head = pRootOfTree;
                preNode = pRootOfTree;
            } else {
                preNode.right = pRootOfTree;
                pRootOfTree.left = preNode;
                preNode = pRootOfTree;
            }
            if(pRootOfTree.right != null) {
                midShow(pRootOfTree.right);
            }
        }
    }
    

  • 相关阅读:
    RAID中条带的概念
    关于几个与IO相关的重要概念
    分布式调度
    ajax
    choices参数
    1.Python实现字符串反转的几种方法
    django web框架
    CRM总结
    Python面试重点(web篇)
    day02-网编并发数据库
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/13797181.html
Copyright © 2011-2022 走看看