二叉搜索树与双向链表

来源:互联网 发布:qq会员永久软件 编辑:程序博客网 时间:2024/05/17 06:27

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

思路:二叉搜索树变成排序的双向链表,即中序遍历,将树结构转为双向链表结构。具体见剑指offer的P152

代码如下:

/**public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class Solution {    TreeNode cur = null;    public TreeNode Convert(TreeNode pRootOfTree) {        if(pRootOfTree==null) return null;        midTravel(pRootOfTree);                while(cur.left!=null){            cur = cur.left;        }                return cur;    }        public void midTravel(TreeNode root){       if(root==null){           return;       }               midTravel(root.left);          root.left = cur;       if(cur!=null){           cur.right = root;       }          cur = root;                  midTravel(root.right);      }}

其中cur用来表示上一个节点,方便与当前节点root完成左右相连的工作。


0 0
原创粉丝点击