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

  • 相关阅读:
    HTML5是否已为实际应用做好准备? 狼人:
    10月Web服务器调查:Apache下降 Ngnix攀升 狼人:
    微软IE9通过97.7%的CSS 2.1测试 狼人:
    PHP将死。何以为继? 狼人:
    Firefox 4.0 Beta 8开始开发 新引擎依然没影 狼人:
    Adobe发布Air 2.5支持RIM平板电脑 狼人:
    Firefox 4.0:我们2011年再见面吧 狼人:
    Adobe AIR登陆Android 狼人:
    Google不推荐在URL里使用竖线 狼人:
    40个很不错的CSS技术 狼人:
  • 原文地址:https://www.cnblogs.com/dyq19/p/10549710.html
Copyright © 2011-2022 走看看