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

    题目描述

    输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
     
     1 /**
     2 public class TreeNode {
     3     int val = 0;
     4     TreeNode left = null;
     5     TreeNode right = null;
     6 
     7     public TreeNode(int val) {
     8         this.val = val;
     9 
    10     }
    11 
    12 }
    13 */
    14 public class Solution {
    15     TreeNode lastNode;
    16     public void dfs(TreeNode p) {
    17         if (p == null) return;
    18         TreeNode l = p.left;
    19         TreeNode r = p.right;
    20         p.left = p.right = null;
    21         dfs(l);
    22         p.left = lastNode;
    23         lastNode.right = p;
    24         lastNode = p;
    25         dfs(r);
    26     }
    27     public TreeNode Convert(TreeNode pRootOfTree) {
    28         if (pRootOfTree == null) return null;
    29         TreeNode dummy = new TreeNode(0);
    30         lastNode = dummy;
    31         dfs(pRootOfTree);
    32         dummy.right.left = null;
    33         return dummy.right;
    34     }
    35 }
  • 相关阅读:
    Tomcat配置JNDI
    (转)通过反编译深入理解Java String及intern
    (转)Java8内存模型-永久代(PermGen)和元空间(Metaspace)
    排序算法
    并发编程
    MySQL
    Go语言
    Go语言
    Go语言
    Go语言
  • 原文地址:https://www.cnblogs.com/hyxsolitude/p/12344284.html
Copyright © 2011-2022 走看看