完全二叉树判断 层次遍历

xiaoxiao2021-02-28  103

有一棵二叉树,请设计一个算法判断它是否是完全二叉树。

给定二叉树的根结点root,请返回一个bool值代表它是否为完全二叉树。树的结点个数小于等于500。

/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class CheckCompletion { public: bool chk(TreeNode* root) { queue<TreeNode*> qu;//处理数据队列 qu.push(root); TreeNode* temp = root; while(!qu.empty()){ TreeNode* cur = qu.front();//队头节点 qu.pop(); if(cur->left){ qu.push(cur->left); temp = cur->left; } if(cur->right){ qu.push(cur->right); temp = cur->right; if(cur->left == NULL) return false;//结点有右孩子但没有左孩子,返回false } if(cur == temp){ if(cur->left || cur->right) return false; } } return true; } };

转载请注明原文地址: https://www.6miu.com/read-55851.html

最新回复(0)