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

    将BST转成双向链表,相当于中序遍历

    非递归法:

    public class Solution {
     public static TreeNode Convert(TreeNode pRootOfTree) {
            TreeNode p = pRootOfTree;
            TreeNode q = null;
            if(p!=null){
                LinkedList<TreeNode> list = new LinkedList<>();
                list.push(p);//根结点入栈
                while(p.left!=null){//左子树的根节点入栈
                    p = p.left;
                    list.push(p);
                }
                TreeNode head = p;//题目需要输出的链表头节点
                while(!list.isEmpty()){
                    p = (TreeNode)list.pop();
                    if(q == null){//q指向链表当前结点的前一个结点
                        q = p;
                    }
                    else{
                        q.right = p;
                        p.left = q;
                        q = p;
                    }
                    if(p.right != null){//右子树入栈
                        list.push(p.right);
                        p = p.right;
                        while(p.left!=null){
                            p = p.left;
                            list.push(p);
                        }
                    }
                
                }
                return head;
            }
            return null;
        }
    }

    https://en.wikipedia.org/wiki/Tree_traversal#Iterative_Traversal

  • 相关阅读:
    recess----2.Controller里面取用request信息
    recess----1.第一个APP-helloRecess
    Introducing MVC
    IFA Basics
    Why do Antennas Radiate?
    [JSP]JSP 简介
    [Spring]04_最小化Spring XML配置
    [设计模式]创建型模式
    [设计模式]原型模式
    [设计模式]建造者模式
  • 原文地址:https://www.cnblogs.com/dyq19/p/10549710.html
Copyright © 2011-2022 走看看