BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #89618同步于 2015/12/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

有嘛方法快速建二叉树 ?

tycoon0
2015/12/2镜像同步14 回复
一个节点一个节点的建 再挂上左右孩子 很麻烦的感觉
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
fuxuemingzhu机器人#1 · 2015/12/2
[ema1]借楼同问
chenxiansf机器人#2 · 2015/12/2
用数组? 每个节点的左孩子下标都是当前下标的两倍,右孩子下标都是当前下标的两倍加1?
xiaobing307机器人#3 · 2015/12/2
这个得是完全二叉树吧 【 在 chenxiansf 的大作中提到: 】 : 用数组? : 每个节点的左孩子下标都是当前下标的两倍,右孩子下标都是当前下标的两倍加1?
chenxiansf机器人#4 · 2015/12/2
不是啊,把普通二叉树当成满二叉树来分配空间,然后没有的结点空着预留的空间就行 【 在 xiaobing307 的大作中提到: 】 : 这个得是完全二叉树吧
nuanyangyang机器人#5 · 2015/12/3
你需要一个领域专门语言(DSL) erchashu = ( ( ( (), 1,() ), 2, ( (), 3, ()) ), 4, ( ( ( (), 5, ( (), 6, () ), ), 7, ( ( (), 8, () ), 9, ( (), 10, () ) ) ) ) ) def inorder(tree): if tree == (): return else: l, m, r = tree inorder(l) print(m) inorder(r) inorder(erchashu)
june0334机器人#6 · 2015/12/3
【 在 nuanyangyang 的大作中提到: 】 : 你需要一个领域专门语言(DSL) : [code=python] : erchashu = ( : ................... 啥(四声),啥(四声),这写的都是啥(四声)
nuanyangyang机器人#7 · 2015/12/3
【 在 june0334 的大作中提到: 】 : 啥(四声),啥(四声),这写的都是啥(四声) Python语言。我用空元组,即“()”表示叶子节点,用三元组(l, m, r)表示分支节点。数据存储在分支节点上,叶子节点都是空的。这样,空树就表示为(),只有根的树表示为((), 42, ()),其中42可以换成随便什么数据。于是,可以用这种方法组合出比较复杂的树,比如: ( ((),1,()), 2, ((),3,())) 这就是一个有3个节点的树。 其实用C++也可以。比如定义一个结构: struct Node { Node* left; int data; Node* right; }; 然后创建两个函数来构造它们: // 用br创建分支节点,带数据 Node* br(Node *left, int data, Node *right) { Node *n = new Branch(); n->left = left; n->data = data; n->right = right; return n; } // 用lf创建叶子节点,没有数据 Node* lf() { return nullptr; } 那么同样的树可以写成: Node *root = br( br(lf(),1,lf()), 2, br(lf(),3,lf())); 如果这个还麻烦,可以加一个创建“只有数据没有孩子的分支节点”: Node* bs(int data) { return br(nullptr, data, nullptr); } Node *root = br( bs(1), 2, bs(3)); 还嫌麻烦的话,可以把bs改名叫br,反正C++允许函数名重载。 其实不管怎么样,树的每个节点都要创建。麻烦的只是表达方式。有一个好的语言,就会很简单。
zhaoyu1999机器人#8 · 2015/12/3
雾草 学习了 【 在 nuanyangyang 的大作中提到: 】 : : Python语言。我用空元组,即“()”表示叶子节点,用三元组(l, m, r)表示分支节点。数据存储在分支节点上,叶子节点都是空的。这样,空树就表示为(),只有根的树表示为((), 42, ()),其中42可以换成随便什么数据。于是,可以用这种方法组合出比较复杂的树,比如: : ( ((),1,()), 2, ((),3,())) : ...................
neliern机器人#9 · 2015/12/3
天啦噜谢谢暖神 【 在 nuanyangyang 的大作中提到: 】 【 在 june0334 的大作中提到: 】 : 啥(...