package com.gylhaut.bean; public class TreeNode<T> { public T data; public TreeNode left; public TreeNode right; public TreeNode(T data) { this.left = null; this.right = null; this.data = data; } }
算法实现:
package com.gylhaut.util; import com.gylhaut.bean.TreeNode; public class BinaryTreeHelper { /** * 指向头节点 * @param root * @return */ public static TreeNode convert(TreeNode root){ root=convert2Link(root); while (root.left != null){ root = root.left; } return root; } /** * 搜索二叉树转成双向链表 * @param root * @return */ public static TreeNode convert2Link(TreeNode root){ if(root == null|| (root.left == null && root.right == null)){ return root; } TreeNode tmp = null; if(root.left != null){ tmp= convert2Link(root.left); while (tmp.right != null){ tmp = tmp.right; } tmp.right = root; root.left = tmp; } if (root.right !=null){ tmp = convert2Link(root.right); while (tmp.left != null){ tmp = tmp.left; } tmp.left = root; root.right = tmp; } return root; } }