总结:怎样写递归函数?关键是把递归函数的功能定义清楚,并在递归函数体中使用自身来做事,此时不要关注递归函数执行的细节。也就是写高层级代码的时候不要关注低层级的事情,这就叫抽象。关注也没有用,想不清楚的。
1 class Solution { 2 public void flatten(TreeNode root) { 3 flatten_(root); 4 } 5 //展开root子树 6 private void flatten_(TreeNode root){ 7 if(root==null){ 8 return ; 9 } 10 11 flatten_(root.left); 12 flatten_(root.right); 13 14 TreeNode left=root.left; 15 TreeNode right=root.right; 16 //把左子树对应的链表挂到root.right;root.left置空 17 root.right=left; 18 root.left=null; 19 20 //找到left链表的尾节点,把右子树对应的链表挂上去 21 TreeNode p=left; 22 while(left!=null){ 23 p=left; 24 left=left.right; 25 } 26 27 if(p==null) root.right=right; 28 else p.right=right; 29 } 30 }标签:right,TreeNode,链表,114,二叉树,flatten,root,left From: https://www.cnblogs.com/feimingdi/p/17501397.html