2013年12月16日月曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅢ部(高度なプログラミング概念)の17章(高度なポインタ)、17.7(ツリー)、17.8(ツリーの出力)、17.9(プログラムの残りの部分)、設問 17-2をJavaScriptで解いてみる。

その他参考書籍

設問 17-2.

コード(BBEdit)

var Node = function (word) {
        var word = word,
            left = null,
            right = null;
        this.getWord = function () {
            return word;
        },
        this.setWord = function (word) {
            word = word;
        },
        this.getLeft = function () {
            return left;
        },
        this.setLeft = function (node) {
            left = node;
        },
        this.getRight = function () {
            return right;
        },
        this.setRight = function (node) {
            right = node;
        };
    },
    Tree = function () {
        var root = null,
            _enter = function (node, word) {
                if(node === null){
                    node = new Node(word);
                } else if(node.getWord() > word){
                    node.setLeft(_enter(node.getLeft(), word));
                } else if(node.getWord() < word){
                    node.setRight(_enter(node.getRight(), word));
                }
                return node;
            },
            printTree = function (node, n) {
                if(node === null){
                    return '';
                }
                return printTree(node.getLeft(), n + 1) +
                    new Array(n + 1).join('  ') + node.getWord() + '\n' +
                    printTree(node.getRight(), n + 1);
            };
        this.s = printTree(root, 0);
        this.enter = function (word) {
            root = _enter(root, word);
        },
        this.toString = function () {
            return printTree(root, 0);
        };
    },
    t = new Tree(),
    words = ['able', 'baker', 'cook', 'delta', 'easy'],
    i,
    max;
for(i = 0, max = words.length; i < max; i += 1){
    t.enter(words[i]);
}
$('#pre0').text(t.toString());












						

0 コメント:

コメントを投稿