算法 递归-二叉搜索树与双向链表 求解代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public TreeNode head = null;//双向链表的头节点 public TreeNode cur = null;//双向链表的尾节点游标 public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree==null){ return null; } Convert(pRootOfTree.left); if(cur == null){ head = pRootOfTree; cur = pRootOfTree; }else{ cur.right = pRootOfTree; pRootOfTree.left = cur; cur = pRootOfTree; } Convert(pRootOfTree.right); return head; } 说明: 核心就在于其中的if/else语句。 1 2 if(cur为空) → 初始化链表,头和尾都是第一个节点; else → 把当前节点拼到链表尾部,完成双向绑定,然后移动尾指针。