void printPathTo(Node* node, int* val) { std::cout << *node->getValue() << " "; if(val == node->getValue()) { return; } else if(*val < *node->getValue()) { printPathTo(node->getLeft(), val); } else if(*val > *node->getValue()) { printPathTo(node->getRight(), val); } }
void FilePath::printPathTo(ino_t this_inode) { ino_t my_inode; char its_name[BUFSIZ]; if( get_inode("..") != this_inode) { chdir(".."); inum_to_name(this_inode, its_name, BUFSIZ); my_inode = get_inode("."); printPathTo(my_inode); printf("/%s", its_name); } strcpy(path, its_name); }
int main(){ std::array<int, TREE_SIZE> valueArray; for(int i = 0; i< valueArray.size(); i++) { valueArray[i] = i; } Node* rootNode = buildTree(valueArray, 0, TREE_SIZE - 1); // printTree(rootNode); // std::cout << std::endl << std::endl; printPathTo(rootNode, &valueArray[7]); std::cout << std::endl; std::vector<LinkedList*> lists; bool unbalance = 0; int extra1 = 10; int extra2 = 11; if(unbalance) { Node* extraN1 = new Node(); extraN1->setValue(&extra1); Node* extraN2 = new Node(); extraN2->setValue(&extra2); extraN1->setRight(extraN2); rootNode->getRight()->getRight()->getRight()->setRight(extraN1); } getLayers(lists, rootNode, 0); for(int i = 0; i < lists.size(); i++) { printLL(lists.at(i)); std::cout << std::endl; } std::pair<bool, int> balanceResultPair = isBalanced(rootNode); bool balanceResult = balanceResultPair.first; std::cout << std::endl << "Balanced? " << balanceResult << " Height: " << balanceResultPair.second << std::endl; }
char* FilePath::getPath() { printPathTo(get_inode(".")); return path; }