zoukankan      html  css  js  c++  java
  • 把一个二叉树转换成一棵最右深度树,并且保证前序遍历顺序不变

    Amazon Interview Question SDE1s

    Given a binary tree. Modify it in such a way that after modification you can have a preorder traversal of it using only right pointers. During modification you can use right as well as left pointers. Write complete code and dry run it for some test cases

    左子树转换后的最右叶子节点的右子树是root,(还要把当前节点的左子树设置为null)。

    root.right是右子树转换后的头节点。

    public static TreeNode transLeft(TreeNode root) {
            if (root==null) {
                return null;
            }
            TreeNode result = root;
            if (root.left!=null) {
                result = transLeft(root.left);
                TreeNode leftTrans = result;
                while (leftTrans.right!=null) {
                    leftTrans = leftTrans.right;
                }
                leftTrans.right = root;
                root.left = null;
            }
            if (root.right!=null) {
                TreeNode rightTrans = transLeft(root.right);
                root.right = rightTrans;
            }
            return result;
        }
  • 相关阅读:
    我的暑假周记2018.7.21
    大道至简读后感
    我的暑假周记2018.7.15
    继承与多态
    java联级调用
    古罗马凯撒大帝字串加密
    作业三
    线性同余法产生1000个随机数
    Text2
    java登录界面
  • 原文地址:https://www.cnblogs.com/23lalala/p/3520784.html
Copyright © 2011-2022 走看看