二叉搜索树向链表转换
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
(本质就是二叉树的中序遍历算法)
/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { private TreeNode header=null; private TreeNode pLastNode=null; public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree==null) return null; if(pRootOfTree.left==null && pRootOfTree.right==null) return pRootOfTree; convertToList(pRootOfTree); return header; } public void convertToList(TreeNode pRootOfTree){ if(pRootOfTree.left!=null) convertToList(pRootOfTree.left); if(header==null){ header=pRootOfTree; pLastNode=pRootOfTree; }else{ pLastNode.right=pRootOfTree; pRootOfTree.left=pLastNode; pLastNode=pRootOfTree; } if(pRootOfTree.right!=null) convertToList(pRootOfTree.right); } }
立志如山 静心求实