二进制表达式树

时间:2016-03-28 08:10:41

标签: haskell tree binary-tree

我在haskell非常新,我有一个问题。我想以前的名单。 [0,1,0,0,1,1,0,1]并将元素放在树结构中;

data Tree = Leaf Int | Node String (Tree) (Tree)

到目前为止编写了以下代码,但它给出了错误。

bdd (x:xs)= if elem x [0..9] then Leaf x else Node x (Tree) (Tree)

谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

您的代码尝试将x放入Leaf,要求它为Int,并尝试在Node中输出,要求它为String一个Int。当然StringTree是不同的类型,所以这不会编译。此外,Tree是一种类型构造函数,因此您无法使用它。您的代码究竟应该做什么?

答案 1 :(得分:2)

你没有在函数的递归调用中使用Tree构造函数,bdd应返回Leaf,它是使用NodeLeaf构建的,但请注意应使用NodeTree构建节点,并且应使用bdd :: [Int] -> Tree bdd (x:xs)= if elem x [0..9] then Leaf x else Node (show x) (bdd xs) (bdd xs) 构建节点,而不是var Modal = (function($) { var tpl = '<div style="display:none;" class="modal"><div class="modal-backdrop"></div><div class="modal-content"></div></div>'; function Modal(container) { var self = this; this.container = $(container || 'body'); this.tpl = $(tpl).appendTo(this.container); this.content = $('.modal-content', this.tpl); this.backdrop = $('.modal-backdrop', this.tpl); this.isOpened = false; this.ANIMATION_DURATION = 500; this.backdrop.click(function(e) { self.toggle(e) }); } Modal.prototype.show = function(cb) { var self = this; cb = $.isFunction(cb) ? cb : $.noop; this.tpl.fadeIn(this.ANIMATION_DURATION, function() { self.isOpened = true; cb(); }); return this; }; Modal.prototype.hide = function(cb) { var self = this; cb = $.isFunction(cb) ? cb : $.noop; this.tpl.fadeOut(this.ANIMATION_DURATION, function() { self.isOpened = false; cb(); }); return this; }; Modal.prototype.toggle = function() { if(this.isOpened) { return this.hide(); } return this.show(); }; Modal.prototype.setContent = function(content) { this.content.html($('<div />').append(content).html()); return this; }; return Modal; })(window.jQuery); function ExampleCtrl($) { var modal = new Modal(); modal.setContent('<h1>Hello World</h1>'); $('#test').click(function() { modal.show(); }); } window.jQuery(document).ready(ExampleCtrl);

.modal {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
}

.modal .modal-backdrop {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  
  background: rgba(0, 0, 0, .8);
}

.modal .modal-content {
  width: 300px;
  height: 150px;
  background: #fff;
  border: 1px solid yellow;
  position: absolute;
  
  left: 50%;
  top: 50%;
  margin-left: -150px;
  margin-top: -75px;
  
  line-height: 150px;
  text-align: center;
}

h1 {
  line-height: 100px;
}

您应该检查您希望如何正确构建树,这只是一个示例。