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

  • 相关阅读:
    PHP获取某年第几周的开始日期和结束日期
    Java多线程(一)
    Java多线程学习
    使用反射实现 webdriver page 类
    PageObjects 设计模式
    Selenium WebDriver 工作原理
    Selenium2.0 Webdriver 随笔
    Selenium-Grid2 配置RemoteWebDriver
    Java多线程基础(二)
    Java多线程基础(一)
  • 原文地址:https://www.cnblogs.com/dyq19/p/10549710.html
Copyright © 2011-2022 走看看