如何通过其他参数对二叉树进行排序?

时间:2018-04-12 16:19:44

标签: c sorting binary-tree

我正在尝试计算文本中每个单词的出现次数。 所以我在二叉树中存储了所有单词和计数:

typedef struct Node{
         char* word;
         int count;
         struct Node *left;
         struct Node *right;
         struct Node *parent;
} Node;

现在我需要按计数来排序树。 我不能只做周期和排序,所以我想知道,我能做哪种方式?

这是我现在拥有的例子:

                               The - 3
                             /       \
                    Project - 1      of - 3
                     /    \          /    \ 
                 ....     ....      ....    ....

我需要在文本中打印前N个单词。

2 个答案:

答案 0 :(得分:1)

遍历树并将单词及其计数提取为以下数组:

import React from 'react';
import { Resize, ResizeVertical, ResizeHorizon } from "react-resize-layout";
import ResizableBox from 'react-resizable-component';
import {BootstrapTable, TableHeaderColumn} from 'react-bootstrap-table';

const fetchedData = [{
    column1: "Column1",
    column2: "Column2",
    column3: "Column3",
    column4: "Column4",
    column5: "Column5",
    column6: "Column6",
    column7: "Column7",
    column8: "Column8",
    column9: "Column9"
  }, {
    column1: "R2C1",
    column2: "R2C2",
    column3: "R2C3",
    column4: "R2C4",
    column5: "R2C5",
    column6: "R2C6",
    column7: "R2C7",
    column8: "R2C8",
    column9: "R2C9"
  }, {
    column1: "R3C1",
    column2: "R3C2",
    column3: "R3C3",
    column4: "R3C4",
    column5: "R3C5",
    column6: "R3C6",
    column7: "R3C7",
    column8: "R3C8",
    column9: "R3C9"
  }];

class TablePage extends React.Component {

    render() {
        return (
            <div>                
                <Resize handleWidth="5px" handleColor="#777">
                            <ResizeVertical height="250px">
                                <table>
                                    <tbody>
                                        <tr>
                                        <td>test
                                        </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </ResizeVertical>
                            <ResizeVertical height="50px" minHeight="20px">
                                <Resize handleWidth="8px" handleColor="red">
                                    <ResizeHorizon width="150px" height="250px">This section will contain more information...</ResizeHorizon>
                                    <ResizeHorizon width="150px" height="250px">This section will contain graphical information...</ResizeHorizon>
                                </Resize>
                            </ResizeVertical>
                        </Resize>
            </div>
        );
    }
}

export default TablePage;

然后使用struct WordAndCount { char * word; int count; }; 对数组进行排序。您将需要一个自定义比较函数来比较WordAndCount.count;

答案 1 :(得分:0)

在树中存储项目的标准是什么?左边的节点总是比右边的节点的数量少吗?如果是这样,为了获得前N个单词,你会进行一个后期遍历,保持一个计数器并在它到达N时停止。