1
yangff 2013-12-15 13:20:45 +08:00
class TreeNode{
int value; TreeNode left; TreeNode right; } ……现在很少这样声明二叉树了。 class TreeNode{ int value; TreeNode ch[2]; } 简单轻松。 |
2
felix021 2013-12-15 14:07:47 +08:00
“动态编程”…… 这翻译够烂的。
|
3
misaka 2013-12-15 14:14:53 +08:00 via Android
直接看原文吧。
|
6
yangff 2013-12-15 16:14:58 +08:00
@haohaolee 比如说……
左孩子ch[0]右孩子ch[1]…… 好扯淡啊 没关系换个说法。 如果balabala访问左孩子xxx,否则访问右孩子 ch[balabala^1] 哎…… 继续,如果A访问左孩子的右孩子,否则访问右孩子的左孩子 ch[A^1]->ch[A] 如果我在父节点的左边,就把父节点放到我的右边,如果我在父节点的右边,就把父节点放到我的左边。(平衡树旋转中的一步) int getDir(){ return this == p->ch[1]; } ch[p->getDir()^1] = p;p->p = this; 进而完整的rotate只要8~9行就能写完QAQ,真是简单又实惠的技巧~还不用担心左旋右旋写错了~ 找兄弟~ p->ch[getDir()^1] 但是总感觉没有left和right好不爽啊。 node* left(){ return ch[0]; } node* right(){ return ch[1]; } |
9
felix021 2013-12-15 20:18:01 +08:00
噢 我说反了。是你1L留的那个编译不过, TreeNode* ch[2] 才对。
|
13
luikore 2013-12-16 03:44:46 +08:00
原文也不怎么样, breadth 都能拼错成 breath ...
|