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

    【题目描述】

    基础:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。

    进阶:要求不能创建任何新的节点,只能调整书中节点指针的指向

    【基础】

    解1:先序遍历二叉树,将遍历结果存入一个队列,再建立双向链表。

     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 import java.util.*;
    15 
    16 public class Solution {
    17     public TreeNode Convert(TreeNode pRootOfTree) {
    18         // 先序遍历O(N), O(N)
    19         if(pRootOfTree == null)
    20             return null;
    21         LinkedList<TreeNode> que = new LinkedList<TreeNode>();
    22         inOrderToQueue(pRootOfTree, que);
    23         TreeNode head = que.poll();
    24         TreeNode cur = head;
    25         while(que.isEmpty() == false){
    26             cur.right = que.poll();
    27             cur.right.left = cur;
    28             cur = cur.right;
    29         }
    30         return head;
    31     }
    32     
    33     public static void inOrderToQueue(TreeNode head, LinkedList<TreeNode> queue){
    34         if(head == null)
    35             return ;
    36         if(head.left != null)
    37             inOrderToQueue(head.left, queue);
    38         queue.offer(head);
    39         if(head.right != null)
    40             inOrderToQueue(head.right, queue);
    41     }
    42 }
    View Code

    【进阶】

  • 相关阅读:
    C# 保存base64格式图片
    C# 日期比较
    Socket的使用
    地质演变完整事记
    计算机实用的使用技巧
    ebook 电子书项目
    ppt演讲者模式
    IT行业三大定律
    史前生命
    Oracle DataGuard发生归档丢失增量备份恢复备库
  • 原文地址:https://www.cnblogs.com/HITSZ/p/7785008.html
Copyright © 2011-2022 走看看