Geeks - AVL Tree Deletion 平衡二叉树 删除操作

在工作中的经常使用repo命令,但是有时会忘记一些命令和遇到的一些问题,记录下来方便已经查询。

常见问题:

问题1:找不到命令:repo

方法:

在下载android源码的时候用repo时提示找不到命令,可以用如下方法解决,在命令行中输入如下两行:

echo ‘export PATH=$PATH:$Home/bin‘ >>~/.bashrc

export PATH=$PATH:$HOME/bin

问题2:

/home/xxxxxx/bin/repo: line 1: 在未预料的“newline”附近出现语法错误

/home/xxxxxx/bin/repo: line 1: `<!DOCTYPE HTMLPUBLIC "-//IETF//DTD HTML 2.0//EN

方法【转】:

1.安装git

sudo apt-get install git-core

2.安装curl

sudo apt-get install git-core curl

3.安装repo, 通过curl下载repo

网上或者很多书籍上都是这样写的:

curl http://android.git.kernel.org/repo >~/bin/repo

结果得到的repo不能用,什么301重定向的,唉!悲催啊!后来在csdn上发了个贴子,大牛给解决啦!

http://code.google.com/p/git-repo/downloads/detail?name=repo-1.12这个链接提供下载repo!

也可以通过下面命令得到:

curl http://git-repo.googlecode.com/files/repo-1.12> ~/bin/repo

4.修改执行权限

chmod a+x ~/bin/repo

5.修改~/bin/repo文件将第五行

这一步又是容易出错啊,哥就死在这里很久啊!很多书籍或网站上都是这样命令:

~/bin/repo init -ugit://android.git.kernel.org/platform/manifest.git

执行以后,等n久,结果出现让你喜出望外的结果啊

error:Failed connect to code.google.com:443; Operation now inprogress while accessinghttps://code.google.com/p/git-repo//info/refs

网上大牛解决:修改~/bin/repo文件将第五行

REPO_URL=‘https://code.google.com/p/git-repo/‘

改为

REPO_URL=‘http://code.google.com/p/git-repo/‘

6.然后向PATH中添加bin路径:

export PATH=$PATH:~/bin

7.新建一个目录,然后进入该目录。

mkdir source

cd source

8.执行repo init -ugit://Androidgit.linaro.org/platform/manifest.git -bandroid-2.3.4_r1

这一步大概有一分多钟就完成了。

9.修改.repo文件

找到source目录中的.repo下面的manifest.xml文件,这是个隐藏文件 ls -a才能看到

cd .repo

gedit manifest.xml

将fetch="git://Android.git.kernel.org/"

改为

fetch="git://Android.git.linaro.org/"

10.执行repo sync -j5

repo的常用命令:

  1. 下载 repo 的地址: http://android.git.kernel.org/repo
    ,可以用 wget http://android.git.kernel.org/repo 或者 curl http://android.git.kernel.org/repo
    >~/bin/repo  来下载 repo , chmod a+x ~/bin/repo
  2. 用repo sync 在抓去 android source code 的时候,会经常出现一些错误导致 repo sync 中断,每次都要手动开始。 可以用如下的命令,来自动重复:   $?=1;   while [ $? -ne 0 ] ; do  repo sync ; done
  3. repo help [ command ] , 显示command 的详细的帮助信息内容
  4. repo init -u URL ,  在当前目录安装 repository ,会在当前目录创建一个目录 ".repo"  -u 参数指定一个URL, 从这个URL 中取得repository 的 manifest 文件。   repo init -u git://android.git.kernel.org/platform/manifest.git

可以用 -m 参数来选择 repository 中的某一个特定的 manifest 文件,如果不具体指定,那么表示为默认的 namifest 文件 (default.xml)    repo init -u git://android.git.kernel.org/platform/manifest.git -m dalvik-plus.xml

可以用 -b 参数来指定某个manifest 分支。

repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0

可以用命令: repo help init 来获取 repo init 的其他用法

4. repo sync [project-list]

下载最新本地工作文件,更新成功,这本地文件和repository 中的代码是一样的。 可以指定需要更新的project , 如果不指定任何参数,会同步整个所有的项目。

如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。 如果不是第一次运行 repo sync , 则相当于 git remote update ;  git rebase origin/branch .  repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行  git  rebase --continue

5. repo update[ project-list ]

上传修改的代码 ,如果你本地的代码有所修改,那么在运行 repo sync 的时候,会提示你上传修改的代码,所有修改的代码分支会上传到 Gerrit (基于web 的代码review 系统), Gerrit 受到上传的代码,会转换为一个个变更,从而可以让人们来review 修改的代码。

6. repo diff [ project-list ]

显示提交的代码和当前工作目录代码之间的差异。

7. repo download  target revision

下载特定的修改版本到本地, 例如:  repo download pltform/frameworks/base 1241 下载修改版本为 1241 的代码

8. repo start newbranchname

创建新的branch分支。 "." 代表当前工作的branch 分支。

9.  repo prune [project list]

删除已经merge 的 project

10. repo foreach [ project-lists] -c command

对每一个 project 运行 command 命令

11. repo status

显示 project 的状态

Geeks - AVL Tree Deletion 平衡二叉树 删除操作

时间: 2024-10-28 09:18:18

Geeks - AVL Tree Deletion 平衡二叉树 删除操作的相关文章

Geeks - AVL Tree Insertion 平衡二叉树

AVL可以保证搜索达到O(lgn)的时间效率,因为两边的树高都差不多.不会出现搜索是线性的最坏情况. 但是AVL在插入和删除节点的时候需要做较多的旋转操作,所以如果修改节点多的时候,最好使用红黑树,但是如果搜索多的时候,就最好使用AVL了. 参考:http://www.geeksforgeeks.org/avl-tree-set-1-insertion/ 注意点: 1 判断关键字和节点的孩子节点的大小判断应该是左转还是右转 2 利用递归就不需要记录父母节点了 3 注意更新balance和判断ba

平衡二叉树(AVL Tree)

在学习算法的过程中,二叉平衡树是一定会碰到的,这篇博文尽可能简明易懂的介绍下二叉树的相关概念,然后着重讲下什么事平衡二叉树. (由于作图的时候忽略了箭头的问题,正常的树一般没有箭头,虽然不影响描述的过程,但是还是需要注意,所以还请读者忽略一下部分图的箭头) 一.二叉(查找)树 二叉查找树(Binary Search Tree)是二叉树的一种,其树节点(internal nodes of the tree)储存着键值并且满足以下特性并如图A所示: 假设u, v, r分别为树的三个结点(nodes)

支持泛型AVL Tree的简单实现,并和STL map比较了插入,删除,查找的性能

1.问题描述: 1)AVL tree是一种自平衡树.它通过左右子树的高度差来控制树的平衡,当高度差是不大于1的时候,认为树是平衡的.树的平衡保证了树在极端情况下 (输入序列不够随机)的性能.很显然当左右子树高度平衡,保证了任何插入,删除,查找操作平均性能呢个,当不平衡时(有的子树很高),当 要操作的元素在这个子树时,性能会很差: 2)AVL tree 和Red black tree 都是一种平衡树,它的操作的时间复杂度是:O(lgN) ,N是树的节点的数目: 3)本文实现了AVL Tree, 并

04-树5 Root of AVL Tree + AVL树操作集

An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. Figures 1-4 illust

Splay Tree的删除操作

Splay Tree的插入操作,搜索操作,和删除操作都实现了,那么就可以使用来解题了. 指针的删除操作的处理还是那么难的,很多坎需要避开. 同一个坎还是坑了我好多次,就是指针传递的问题,什么时候需要修改指针本身的值,就必须返回指针或者传递指针的指针,或者传递指针的的实参. 这里的删除操作就是需要改变传递到函数的指针本身的,所以我这里使用了返回指针操作. 还有删除树的问题,之前的代码没做删除操作,所以没问题,现在需要逐个节点删除,所以要小心不能把整个树都删除了. 至此, splay 树的功能差不多

Geeks Splay Tree Insert 树的插入操作

Splay树的插入操作,只需要处理好插入节点的孩子节点就可以了,最重要的是不要破坏了BST的基本规则. 因为高度并不是Splay树的首要因素,所以插入的时候也是使用splay操作,然后在根节点插入. 参考:http://www.geeksforgeeks.org/splay-tree-set-2-insert-delete/ 对比一下使用插入创建的树和手工创建数的区别,先序遍历的结果: #pragma once #include<stdio.h> #include <stdlib.h&g

PAT 甲级 1066 Root of AVL Tree (25 分)(快速掌握平衡二叉树的旋转,内含代码和注解)***

1066 Root of AVL Tree (25 分) An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this

BST, AVL Tree 和 Splay Tree 的实现

一.定义. 1.1 BST 二叉搜索树,也称有序二叉树,排序二叉树,是指一棵空树或者具有下列性质的二叉树: ① 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值: ② 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值: ③ 任意节点的左.右子树也分别为二叉查找树. ④ 没有键值相等的节点. 1.2 AVL Tree 平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差(平衡因子)的绝对值不超过1,且它的左子树和右子

二叉平衡树的插入和删除操作

1.      二叉平衡树 二叉排序树的时间复杂度和树的深度n有关.当先后插入的结点按关键字有序时,二叉排序树退化为单枝树,平均查找长度为(n+1)/2,查找效率比较低.提高查找效率,关键在于最大限度地降低树的深度n.因此需要在构成二叉排序树的过程中进行“平衡化”处理,使之成为二叉平衡树. 二叉平衡树,又称AVL树.它或者是一棵空树,或者是具有下列性质的树: 1)      具备二叉排序树的所有性质: 2)      左子树和右子树深度差的绝对值不超过1: 3)      左子树和右子树都是二叉