美文网首页
剑指 Offer 36. 二叉搜索树与双向链表 114.

剑指 Offer 36. 二叉搜索树与双向链表 114.

作者: 漫行者_ | 来源:发表于2021-09-08 23:57 被阅读0次

    剑指 Offer 36. 二叉搜索树与双向链表

    114. 二叉树展开为链表

    两道题都用全局变量加dfs来做。
    **对于这种题目最关注的就是全局变量。本题中的pre,和head分别表示,向前节点以及头节点。
    这里面最关键的代码就是。需要对全局变量的特殊处理

        if(pre == null) {
                head = cur;
            } else {
                pre.right = cur;
                cur.left = pre;
            }
    
    class Solution {
     Node pre, head;
        public Node treeToDoublyList(Node root) {
            if(root == null) return null;
            dfs(root);
            head.left = pre;
            pre.right = head;
            return head;
        }
        void dfs(Node cur) {
        
            if(cur == null) return;
            dfs(cur.left);
            if(pre == null) {
                head = cur;
            } else {
                pre.right = cur;
                cur.left = pre;
            }
            pre = cur;
            dfs(cur.right);
        }
    }
    

    第二道题关键点还是全局变量。这里采用先序遍历。
    关键还是对pre的判断
    代码如下:

    class Solution {
        TreeNode pre;
        public void flatten(TreeNode root) {
            if(root == null) return;
            TreeNode left = root.left;
            TreeNode right = root.right;
            if(pre != null) {
                pre.right = root;
            } 
            pre = root;
            root.left = null;
            flatten(left);
            flatten(right);
        }
    }
    

    相关文章

      网友评论

          本文标题:剑指 Offer 36. 二叉搜索树与双向链表 114.

          本文链接:https://www.haomeiwen.com/subject/btobwltx.html